Zebra 为国信证券自主研发的一个高性能微服务开发框架,应用于国信证券金太阳 App 各个业务的后端,已稳定运行 2 年多。
发展历程如下:
随着国信证券业务的发展及用户数的增长,对技术的要求日益提高。原有系统的基础架构已不能很好地支撑业务的诉求,制约了业务的快速创新和敏捷交付。
新基础架构的推出迫在眉睫,需满足下面几个基本诉求:
微服务架构可以较好满足上述需求。
2015 年为微服务的元年,到 2017 已有两年多,在互联网有较多的应用,相关的基础组件也较为成熟,新架构采用微服务可谓水到渠成。
在微服务框架选型阶段调研了当时业界使用较多的两个框架:Spring Cloud 和 Dubbo。
各自存在的不足之处如下:
1.Spring Cloud
2.Dubbo
两个框架都不能很好满足国信证券的需求,所以最终决策自研微服务框架。当然也不是从零开始另造轮子,而是借鉴已有的微服务框架设计思想,引入已有的开源软件,在其上面构筑出符合国信证券需求的微服务框架。
组件 | 说明 |
---|---|
配置中心 | 微服务配置统一管理、版本支持、配置分离,保证服务无状态。 |
服务中心 | 展示服务状态,服务依赖关系,服务 API 管理,监控展示。 |
注册中心 | 服务自动注册、自动发现、负载均衡、异常保护、异常通报下发、服务降级。 |
监控中心 | 基于 Prometheus 协议,实现应用监控、异常上报、功能主动监控。 |
Zebra 微服务 | 基于 SpringBoot,极大地简化开发工作微服务通信协议采用高性能的 gPRC使用阿里巴巴的 Sentinel 做流量控制 |
API 网关 | 通过服务中心界面配置路由,对外暴露 HTTP 端口,路由后自动转换为内部 gRPC 调用。 |
由于性能的原因,通信协议一开始就确定使用 RPC,而非 HTTP + RESTful。
在对比了谷歌 gRPC、阿里 Dubbo 和腾讯 TARS 之后,最终确定使用 gPRC 作为底层 RPC 框架。
gRPC 由 Google 开发。使用最新的网络传输协议 HTTP2,通过使用流的单个 TCP 连接来实现低延迟和多路复用请求。与 REST over HTTP / 1.1 相比,gRPC 非常快速和灵活。
选用 gRPC,因为 gRPC 有以下几个优势:
注册中心选型对比了 Etcd 和 Zookeeper。
Etcd 为 Zookeeper 的后起之秀,灵感来源于 Zookeeper,在实现上做了较多的改进。
从技术的发展趋势来看,容器化是大势所趋,当微服务发展到一定程度时,基本都会上 Kubernates,Kubernates 也使用 Etcd 作为其核心组件,采用 Etcd 也可以减少后期维护成本。
最终选型了 Etcd 做为服务注册中心。
通过服务中心将各个管理界面统一集成,方便运维操作。
Zebra 不仅仅是一个微服务框架,更是集成了开发常使用的 Java 第三方软件,方便业务开发者的开发。
无论是传统的单体开发还是现代的微服务开发,开发者往往会使用到各种第三方软件(比如 Mybatis、MQ 等),而各种软件都必须开发者做各种大同小异的集成工作或者公共代码的开发。为此 Zebra 微服务框架提供了常用的第三方软件的集成,以便
已集成的第三方组件如下:
后续会根据业务和社区的需求,不断集成各种第三方软件,如 Elastic-Job(计划 2020 年提供)等。
Zebra 已应用于国信证券金太阳的交易、理财、资讯、业务办理和首页等业务,上线的微服务数量 30+ 个,稳定运行 2 年多。
当前代码已开源,欢迎大家使用和贡献代码 :-)
代码地址:https://gitee.com/gszebra/zebra
文档地址:https://www.kancloud.cn/gszebra/zebra_doc/content
作者介绍:
邓启翔 ,国信证券 Zebra 微服务技术负责人,具有多年网络框架和分布式系统架构设计及研发经验,对微服务有深刻理解。曾就职于平安、汇添富基金,资深架构师。
陈培新, 国信证券软件工程师,2019 年加入国信证券参与 Zebra 微服务研发。2012 至 2019 年就职于华为,先后参与电信领域 OSS 系统、编排中台的设计与研发工作。Java 资深工程师,目前专注于微服务领域的设计与开发。
领取专属 10元无门槛券
私享最新 技术干货