组件选型
- 分布式系统套件版本:Spring Boot 2.0.8.RELEASE + Spring Cloud Finchley.SR2
- 服务治理注册与发现:Spring Cloud Alibaba Nacos(注意0.8.0才是生产可用状态)
- 统一配置中心:Spring Cloud Alibaba Nacos
- 服务降级、熔断和限流:alibaba/Sentinel
- 网关路由代理调用:Spring Cloud Netflix Zuul
- 声明式服务调用:Spring Cloud OpenFeign
- 服务负载均衡:Spring Cloud Netflix Ribbon
- 服务安全认证:Spring Security
- 数据访问层:Mybatis-plus
- 统一日志收集存储:ELK + Filebeat
- 服务应用监控:Spring Cloud Admin
- 服务调用链监控:Skywalking
- 全文搜索引擎:Elasticsearch
- 分库分表:Sharding-JDBC
选型版本及理由
大类 | 小类 | 组件名称 | 版本 | 选型理由 | 备注 |
---|---|---|---|---|---|
基本技术栈 | 编程语言 | JAVA | 8 | “我司互联网相关技术框架和技术沉淀及开发团队人才结构都是以JAVA为主。该版本在我司互联网团队成熟使用。” | 免费 |
基本技术栈 | 框架 | Spring | 5.0.12.RELEASE | “Spring为我司最常用的、也是业界使用率最高反转控制技术组件。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
基本技术栈 | 框架 | SpringBoot | 2.0.8.RELEASE | “传统Spring需要通过maven配置组件的依赖,并且需要通过xml或注解最大量组件的配置。SpringBoot遵从约定大于配置的原则设计,大大简化了工程对组件的配置量,降低了系统的开发难度。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
基本技术栈 | 框架 | Spring Cloud | Finchley.SR2 | “为了解决传统分布式系统架构的问题,业界提出了微服务架构体系。但要构建一套完整的微服务架构需要引入一套技术组件,为了快速构建微服务架构体系架构,项目通过引入SpringCloud组件,降低了构建微服务架构的难度。SpringCloud也是现业界最流行、最隐定的微服务架构组件。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
商户接入 | 网关路由代理 | Netflix Zuul | 2.0.2.RELEASE | “SpringCloud微服务架构系统下网关实现组件,在业界广泛使用,有成熟隐定的特点。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
商户接入 | 服务降级、熔断和限流 | alibaba/Sentinel | 1.4.0 | “Sentinel有性能影响小和对应用零入侵的特点。Sentinel还提供了控制台,可以实现实时秒级监控的功能。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
商户接入 | 声明式服务调用 | Spring Cloud OpenFeign | 2.0.2.RELEASE | “SpringCloud微服务架构系统下RPC实现组件,在业界广泛使用,有成熟隐定的特点。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
商户接入 | 服务负载均衡 | Spring Cloud Netflix Ribbon | 1.3.6.RELEASE | “SpringCloud微服务架构系统下负载实现组件,在业界广泛使用,有成熟隐定的特点。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
运营监控 | 日志监控 | ELK | 6.6.2 | “ELK是Elasticsearch、Logstash、Kibana的简称。是业界开源日志归集解决方案中最成熟、最稳定的技术组件。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
运营监控 | 应用监控 | Spring Cloud Admin | 2.0.4 | “SpringCloud微服务架构系统下应用监控实现组件,在业界广泛使用,有成熟隐定的特点。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
运营监控 | 链路跟踪 | Skywalking | 6.0.0-GA | “SkyWalking项目的核心目标,是针对微服务、Cloud Native、容器化架构,提供应用性能监控和分布式调用链追踪能力。目前已加入Apache孵化器。目前支持链路追踪和监控应用组件如下,基本涵盖主流框架和容器,如国产PRC Dubbo和motan等,国际化的spring boot,spring cloud等。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
服务中心 | 商户统一认证 | Spring Security | 2.0.1.RELEASE | “Spring Security 是一个安全权限控制框架,有着使用灵活、高功能扩展性等特点。可以根据我们的业务功能需求定制相关的认证主体角色身份信息及认证方式,从而快速开发出一套完善的权限系统。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
服务中心 | 商户统一授权 | Spring Security oauth2 | 2.3.5.RELEASE | “Spring cloud oauth2是基于OAuth2的开放授权标准的实现,平台通过使用该组件所提供的各类认证手段,使应用指定资源限定访问。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
基础设施 | 服务治理注册与发现&&统一配置中心 | Spring Cloud Alibaba Nacos | 0.9.0 | “Nacos致力于发现、配置和微服务管理。Nacos提供了一组简单易用的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理。使用Nacos可以更敏捷和容易地构建、交付和管理微服务平台。该版本权衡功能和隐定性是最合适的选择。 “ | 开源 |
基础设施 | 分布式缓存 | Redis | 3.2 | “Redis有性能好、支持丰富的数据类型、还支持对单个操作和几个操作合并后的原子性执行、还支持 publish/subscribe, 通知, key 过期等等特性。该组件在业界及我司其它系统中广泛使用。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
基础设施 | 分布式消息中间件 | RocketMq | 4.2.0 | “RocketMq有支持发布订阅和队列消息模型、支持推拉两种消息模式、支持多种消息协议、单一队列百万消息的堆积能力、分布式高可用的部署架构、提供配置指标和监控等非富的功能。该消息中间件由阿里巴巴开源并交由Apache开源组织升级为该组织的顶级项目,组件在互联网实际生产环境得到可靠验证,且在业内得到广泛使用。该版本权衡功能和隐定性是最合适的选择。” | 开源 |
组件对比
服务注册发现
Nacos 对比 Eureka
eureka闭源了,所以不作考虑
nacos是目前比较看好的后起之秀,并且是ap模型非常适合注册中心支持多机房部署;同时无缝对接与支持dubbo、spring cloud和kubernates云原生体系
配置中心
Nacos 对比 Apollo
Nacos缺点:目前的版本在功能上还是比apollo要少点,主要体现在发布审计、灰度发布等功能。
Nacos优点:支持yml格式,并且和注册中心是同一套中间件,方便管理运维
服务降级、熔断和限流
Sentinel 对比 Hystrix
hystrix停止更新了
sentinel 的功能比hystrix要多,主要为以下几点
支持动态配置规则(业务无入侵)
支持系统负载保护(根据自定义规则总体保护,不限于某个接口)
完善的控制台(开箱即用、可配置规则、秒级监控、机器发现等)
网友评论