December 30, 2019
微服务
Golang
gRPC
gRPC 系列——grpc超时传递原理[作者简介] 郑伟,小米信息技术部架构组
引子有个业务方反馈说日志中偶尔出现 xorm 抛出来的 context deadline exceeded 的报错,想咨询下是什么原因。业务方实现的 gRPC Handler 大概代码如下:
12345678fu ...
Read more
December 24, 2019
MySQL
隐式转换
浅析 MySQL 的隐式转换[作者简介] 陈晓,信息部订单组研发工程师,目前主要负责小米订单中台业务。
前言跟大家一块看下 MySQL 的隐式转换相关知识,主要是相等操作时,先看两个可能都遇到过的场景。
表
1234567891011CREATE TABLE `t1` ( `c1` var ...
Read more
December 19, 2019
Java
Spring
线程池
阻塞队列
一次线上线程池任务问题处理历程[作者简介] 王日华,小米信息技术部订单组研发工程师,目前主要负责小米订单中台业务。
一、前言在一次新功能上线过程中,出现线程池提交任务抛出 RejectedExecutionException 异常,即任务提交执行了拒绝策略的操作。查看业务情况和线程池配置,发 ...
Read more
December 17, 2019
redis
分布式锁
分布式锁的实现之 redis 篇[作者简介] 钟梦浩,信息部订单组研发工程师,目前主要负责小米订单中台业务。
一、引言我们在系统中修改已有数据时,需要先读取,然后进行修改保存,此时很容易遇到并发问题。由于修改和保存不是原子操作,在并发场景下,部分对数据的操作可能会丢失。在单服务器系统我们常用 ...
Read more
December 6, 2019
Golang
NSQ
1. 前言:为什么要使用 MQ 消息队列随着互联网技术在各行各业的应用高速普及与发展,各层应用之间调用关系越来越复杂,架构、开发、运维成本越来越高,高内聚、低耦合、可扩展、高可用已成为了行业需求。
一提到消息队列 MQ(Message Queue),我们会想到很多应用场景,比如消息通知、用户 ...
Read more
December 4, 2019
如何高效对接第三方支付[作者简介] 逄志强,海外小米网研发工程师,目前主要负责小米网服务构建和研发工作。
海外小米网是小米集团自建的电商网站,是小米集团重要的销售渠道之一。电商购物流程中核心的一环是用户支付。目前我们已经服务 30 个国家和地区,不同国家往往需要对接不同的第三方支付公司,所以 ...
Read more
November 27, 2019
Golang
汇编
通过上一篇走进 Golang 之汇编原理,我们知道了目标代码的生成经历了那些过程。今天我们一起来学习一下生成的目标代码如何在计算机上执行。以及通过查阅 Golang 的 Plan9 汇编来了解 Golang 的一些内部秘密。
Golang 的运行环境当我们把编译后的 Go 代码运行起来,它会 ...
Read more
November 13, 2019
Golang
编译器
认识 go build当我们敲下 go build 的时候,我们的写的源码文件究竟经历了哪些事情?最终变成了可执行文件。
这个命令会编译 go 代码,今天就来一起看看 go 的编译过程吧!
首先先来认识以下 go 的代码源文件分类
命令源码文件:简单说就是含有 main 函数的那个文件,通 ...
Read more
October 11, 2019
设计模式
前言我一直认为分享的目的不是炫技。
一是,自我学习的总结。
二是,降低他人的学习成本。
三是,别人对自己学习结果的审核。
同时,本次分享有下面四个要素:
观点
本次分享的观点是一个软件工程中的思维方法,不限于编程语言
探讨
我可能理解错的,或者大家没理解的,欢迎大家可以积 ...
Read more
June 21, 2019
什么是高并发?12高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,简单点说,就是QPS(Queries per second)。
那么我们在谈论高并发的时候,究竟在谈些什么东西呢?
高并发究竟是什么?这里先给出结论:高并发的基本表现为单位时间内系统能 ...
Read more