京东技术栈

以下参考《亿级流量网站架构核心技术》这本书,和书的作者的公众号,另外一部分有参考公众号京东大数据、TIGCHAT中的内容。

系统分类

对于一个大型的电商,任何一个看似小的功能,都可以单独拿来做成一个大的系统。无论是从扩展性上、维护性上都是必要的。从自己目前了解的信息,系统业务主要有以下几类:

上述是从业务角度进行划分,除了这里业务系统外,还有通用的辅助系统如:

系统的基建

基建这自己想的名字,包括但不限于各种中间件,各种类型数据库等,比如存储可以单独拿来做一个系统,消息通信也可以有单独维护的消息队列、RPC调用等,大概的分类如下:

对象存储

一般对于大文件与小文件会有不同的存储系统,京东有使用GlusterFS,SeaWeedFS,而且有京东自研的JFS,支持大文件小文件存储。这个领域开源技术非常多,目前的ceph功能多,性能强,非常火,但是是C++开发,互联网公司的估计不会大感兴趣。

消息队列

京东自研JMQ,其他的消息队列Kafka也有使用。(阿里的RocketMQ很厉害,与kafka比加入很多新特性,已经是apache的顶级项目)

RPC框架

有些业务对响应时间是有很高要求的,比如支付,京东自研JSF。(rpc框架更新的速度比较快有Thrift、rpcx,还有阿里的dubbo和HFS,不知道这RPC框架为啥竞争这么激烈,阿里内部都有两个,可能对于分布式来讲,这是个核心的技术,而且发展相对较晚。)

Nosql数据库

京东有使用Hbase、MongoDB,目前看Hbase与Cassandra领跑在前,相互竞争,有各自优势。

关系数据库

Mysql,没啥说的。

虚拟化

docker+k8s。

负载均衡

ngnix+luna,lvs,HAproxy都有涉及

web容器

tomcat

搜索引擎

ES,ES在这方面目前已经是遥遥领先。

一致性组件

zk,使用非常广泛。

缓存

有京东自研的JIMDB,也有使用Redis。目前Redis在分布式缓存领域,遥遥领先。

计算框架

spark

总结下,消息队列、分布式缓存、对象存储、RPC框架都有自研,JMQ、JimDB(in memory db 自己猜测)、JFS、JSF。而数据库(关系、非关系、搜索引擎)方面,不论是京东还是阿里,貌似都是直接用的开源的,不知是因为太难了还是太简单了,还是因为其他原因。

Table of Contents