go语言构建微服务架构 go语言微服务架构框架( 二 )


Cancel:服务下线
Eureka客户端在程序关闭时向Eureka服务器发送取消请求 。发送请求后,该客户端实例信息将从服务器的实例注册表中删除 。该下线请求不会自动完成,它需要调用以下内容:
DiscoveryManager.getInstance().shutdownComponent();
Eviction 服务剔除
在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除 。
自我保护机制:
既然Eureka Server会定时剔除超时没有续约的服务,那就有可能出现一种场景 , 网络一段时间内发生了 异常,所有的服务都没能够进行续约 , Eureka Server就把所有的服务都剔除了,这样显然不太合理 。所以 , 就有了 自我保护机制,当短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制 , 在该机制下, Eureka Server不会剔除任何的微服务,等到正常后,再退出自我保护机制 。自我保护开关(eureka.server.enableself-preservation: false)
3.Consul
consul推荐的架构图:
Consul不像Euraka的部署那么简单,他是go语言开发的,需要运维单独部署,有提供java的客户端连接,采用的是CAP的CP 。
4.Nacos
Euraka是Spring Cloud Netflix早期版本中推荐使用的,后来euraka1.0版本不再维护,euraka2.0已经闭源,导致很多新项目基于Spring Cloud Netflix 开发的选型变迁为Consul.
Nacos是阿里开源的服务注册中心 , 它可以与spring cloud aliaba集成使用 。
Nacos的官方介绍:
Nacos 致力于帮助您发现、配置和管理微服务 。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理 。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台 。Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施 。
Nacos 地图
Nacos 生态图
如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如
Spring Cloud
Apache Dubbo and Dubbo Mesh TODO
Kubernetes and CNCF TODO
三、服务注册与发现技术选型
以下是来自网上的一个分享:
除了上述的几种以外,笔者更推荐使用Nacos作为服务注册中心 。
推荐理由:
Nacos服务注册表结构Mapnamespace, Mapgroup::serviceName, Service采用多层次Map结构 , 控制的颗粒度更细,支持金丝雀模式发布,心跳同步机制也更快速,服务更新更及时 。
Go语言怎么样?根据Go趋势报告显示,全球范围内有 110 万专业开发者选择Go作为其主要开发语言 。如果把以其他编程语言作为主要开发语言 , 同时也在使用Go的开发者计算在内,这一数字将高达270万 , 中国的Go语言开发者排名第一,全球占比超过16% 。
Go 语言能够支持并构建与微服务结合的内部工具、架构和后端服务而深受IT企业欢迎,许多IT架构工具由Go构建而成,例如大型的Kubernetes、Docker和Vault等 。数据显示 , 有63%的具有统治力的云原生项目都是用Go构建 。
因此,博睿数据在国内首发支持Go语言智能探针,对于提升业务性能,助力企业数字化转型有着非常重要的意义 。
SmartAgent探针技术集结主流编程语言
SmartAgent是博睿数据自研的自动化部署的一体化探针,在已支持JAVA,PHP , .net , Nodejs,.NET Core,Python的基础上,新增了对Go语言的支持 。
相较而言,传统探针技术需要客户配合修改应用程序代码,风险不可控,需要客户重新编译程序集成探针,耦合度高 。

推荐阅读