微服务架构与开发|微服务架构-实现技术之具体实现工具与框架1(实现需求+实现技术选型)
目录
一、微服务架构实现需求
二、微服务架构实现技术选型:参考标准的两个维度+微服务实现框架对比
(一)技术选型的两个参考标准
1.核心组件完备性
2.关键要素实现难度
(二)微服务实现框架对比
Spring Boot/Cloud
Dubbo
gRPC
新锐微服务框架:Istio(Service Mesh的设计理念)
参考书籍、文献和资料:
一、微服务架构实现需求 【微服务架构与开发|微服务架构-实现技术之具体实现工具与框架1(实现需求+实现技术选型)】技术实现取决于需求,也就是微服务架构需要的考虑的基本技术问题。一个基本的微服务架构需要实现基本的五大核心功能:服务注册和发现、服务间通信、服务容错、数据管理和API网关,基本实现需求如下:
文章图片
二、微服务架构实现技术选型:参考标准的两个维度+微服务实现框架对比 所谓技术选型,就是选择一个合适的技术体系来支持微服务的开发工作,首先,要明确选型的参考标准。
(一)技术选型的两个参考标准
1.核心组件完备性
基本要求考虑以下5大核心组件:
- 服务通信
- 事件驱动
- 负载均衡
- API网关
- 服务路由
- 配置管理
2.关键要素实现难度
这点上我们主要需要明确注册中心及服务可靠性实现上的难度。
- 注册中心
文章图片
服务的健康检查
Euraka 使用时需要显式配置健康检查支持;Zookeeper,Etcd 则在失去了和服务进程的连接情况下任务不健康,而 Consul 相对更为详细点,比如内存是否已使用了90%,文件系统的空间是不是快不足了。
多数据中心支持
Consul 通过 WAN 的 Gossip 协议,完成跨数据中心的同步;而且其他的产品则需要额外的开发工作来实现;
KV 存储服务
除了 Eureka ,其他几款都能够对外支持 k-v 的存储服务,所以后面会讲到这几款产品追求高一致性的重要原因。而提供存储服务,也能够较好的转化为动态配置服务哦。
产品设计中 CAP 理论的取舍
Eureka 典型的 AP,作为分布式场景下的服务发现的产品较为合适,服务发现场景的可用性优先级较高,一致性并不是特别致命。其次 CP 类型的场景 Consul,也能提供较高的可用性,并能 k-v store 服务保证一致性。 而Zookeeper,Etcd则是CP类型 牺牲可用性,在服务发现场景并没太大优势;
多语言能力与对外提供服务的接入协议
Zookeeper的跨语言支持较弱,其他几款支持 http11 提供接入的可能。Euraka 一般通过 sidecar的方式提供多语言客户端的接入支持。Etcd 还提供了Grpc的支持。 Consul除了标准的Rest服务api,还提供了DNS的支持。
Watch的支持(客户端观察到服务提供者变化)
Zookeeper 支持服务器端推送变化,Eureka 2.0(正在开发中)也计划支持。 Eureka 1,Consul,Etcd则都通过长轮询的方式来实现变化的感知;
自身集群的监控
除了 Zookeeper ,其他几款都默认支持 metrics,运维者可以搜集并报警这些度量信息达到监控目的;
安全
Consul,Zookeeper 支持ACL,另外 Consul,Etcd 支持安全通道https.
Spring Cloud的集成
目前都有相对应的 boot starter,提供了集成能力。
总的来看,目前Consul 自身功能,和Spring Cloud对其集成的支持都相对较为完善,而且运维的复杂度较为简单(没有详细列出讨论),Eureka 设计上比较符合场景,但还需持续的完善。
- 服务可靠性
具体内容如https://blog.csdn.net/xiaofeng10330111/article/details/86772740.
(二)微服务实现框架对比 总体来说,微服务之一种架构风格,对于一个大型复杂的业务系统,特的业务功能可以拆分为多个相互交互的微服务,各个微服务之间是松耦合的,通过各种远程协议进行同步/异步通信,各微服务均可以被独立部署、扩缩容以及升降级。实现框架对比主要如下:
Spring Cloud | Dubbo | Motan | MSEC | 其他 | |
功能 | 微服务完整方案 | 服务治理框架 | 服务治理框架 | 服务开发运维框架 | 略 |
通信方式 | REST/HTTP | RPC协议 | RPC/Hessian | Protocol buffer | grpc、thrift |
服务发现/注册 | Eurreka(AP) | ZK、Nacos | ZK/Conusl | 只有服务发现 | Etcd |
负载均衡 | Ribbon | 客户端负载 | 客户端负载 | 客户端负载 | Nginx+Lua |
容错机制 | 6种容错策略 | 6种容错策略 | 2种容错策略 | 自动容错 | Keepaliced、 HeartBeat |
熔断机制 | Hytrix | 无 | 无 | 提供过载保护 | 无 |
配置中心 | Spring Cloud Config | Nacos | 无 | 无 | Apollo、Nacos |
网关 | Zuul、Gateway | 无 | 无 | 无 | Kong、自研 |
服务监控 | Hytrix、Turbine | Dubbo+Monitor | 无 | Monitor | ELK |
链路监控 | Sleuth+Zipkin | 无 | 无 | 无 | Pinpoint |
多语言 | Rest支持多语言 | Java | Java | Java、C++、PHP | Java、PHP、Node.js |
社区活跃 | 高,背靠spring | 高,背靠阿里 | 一般 | 未知 | 略 |
- Spring Boot/Cloud
基于 Spring 的框架本质上可以认为是一种 RESTful 框架(不是 RPC 框架),序列化协议主要采用基于文本的 JSON,通讯协议一般基于 HTTP。RESTful 框架天然支持跨语言,任何语言只要有 HTTP 客户端都可以接入调用,但是客户端一般需要自己解析 payload。目前 Spring 框架也支持 Swagger 契约编程模型,能够基于契约生成各种语言的强类型客户端,极大方便不同语言栈的应用接入,但是因为 RESTful 框架和 Swagger 规范的弱契约特性,生成的各种语言客户端的互操作性还是有不可坑的。
- Dubbo
Dubbo 主要面向 Java 技术栈,跨语言支持不足是它的一个弱项,另外因为治理能力太丰富,以至于这个框架比较重,完全用好这个框架的门槛比较高,但是如果你的企业基本上投资在 Java 技术栈上,选 Dubbo 可以让你在服务框架一块站在较高的起点上,不管是性能还是企业级的服务治理能力,Dubbo 都做的很出色。
新浪微博开源的 Motan(GitHub 4k stars)也不错,功能和 Dubbo 类似,可以认为是一个轻量裁剪版的 Dubbo。
- gRPC
目前看 gRPC 更适合内部服务相互调用场景,对外暴露 RESTful 接口可以实现,但是比较麻烦(需要 gRPC Gateway 配合),所以对于对外暴露 API 场景可能还需要引入第二套 RESTful 框架作为补充。总体上 gRPC 这个东西还比较新,社区对于 HTTP2 带来的好处还未形成一致认同,建议谨慎投入,可以做一些试点。
- 新锐微服务框架:Istio(Service Mesh的设计理念)
目前首个测试版是针对Kubernetes环境的,社区宣称在未来几个月内会为虚拟机和 Cloud Foundry等其他环境增加支持。 Istio将流量管理添加到微服务中,并为增值功能(如安全性,监控,路由,连接管理和策略)创造了基础。
主要体现在以下几点:HTTP、gRPC和 TCP网络流量的自动负载均衡;提供了丰富的路由规则,实现细粒度的网络流量行为控制;流量加密、服务间认证,以及强身份声明;全范围(Fleet-wide)的策略执行;深度遥测和报告。
现如今企业在采用云计算首选开源,而选择一个开源框架,社区的活跃度将作为重要参考选项。结合项目背景、提供功能、社区更新活跃度和稳定性来看,对于使用 Java系开发业务较多的企业,SpringCloud是目前阶段最为稳妥的可执行微服务框架方案;对于更多企业来说,Istio作为支持对于 Kubernetes的优先支持来讲,也是一个值得关注的方案,其与语言几乎无绑定的特性也值得期待。目前对比来看,Dubbo则显得稍逊下来。
参考书籍、文献和资料: 【1】郑天民. 微服务设计原理与架构. 北京:人民邮电出版社,2018.
【2】徐进,叶志远,钟尊发,蔡波斯等. 重新定义Spring Cloud. 北京:机械工业出版社. 2018.
【3】https://luyiisme.github.io/2017/04/22/spring-cloud-service-discovery-products/.
【4】https://www.cnblogs.com/dadadechengzi/p/8416102.html.
【5】 https://blog.csdn.net/bigtree_3721/article/details/78564591.
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- CET4听力微技能一
- 微习惯复盘
- 社保代缴公司服务费包含哪些
- 员工的微信朋友圈是公司的宣传阵地吗()
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- FBI怎么和恐怖分子谈判
- 探索免费开源服务器tomcat的魅力
- 微雨中的东湖
- 小醉微记|小醉微记|心不安处皆动荡