第一段:服务注册中心的由来
假如没有服务注册中心,我们会干些什么事情呢?
在传统行业的项目架构中以下的方案最为常见了:
这种架构开发、部署都是最简单的,一般适用于中小企业访问量并不是太多的情况下,各个系统服务一台机器就搞定了.系统之间的调用也是拿到对方的IP◆PORT直接连接.
此时此刻呢可能因为应用B开始访问量大了,单台机器已经不能满足我们的需求,于是一些反向代理工具应运而出,其中比较常见的有Apache、Nigix,架构演变为:
相比之前的应用B的单台机器访问,这种nginx代理的方式减轻了服务器的压力,但是可能会出现Nginx挂了,那么整个服务也不可用,于是又来了这么一套架构:
这样看方案算是完美了吧.然后事情并不是想象的那么一帆风顺,这还只是应用A调用一个应用B,如果应用A调用的可能是应用B、C、D、E...,这种完全就不知道他后面到底还想干嘛,这种架构看似可以,但是绝对会累死运维的(nginx的配置将会非常混乱,直接导致运维不干了).
服务注册中心干些什么事情呢?
上面提到的那种靠人力(主要是运维干的事情)比较繁琐,还不好维护,有这么几点不方便:应用服务的地址变了、双十一搞活动服务器新增等等.那么我们可以有这么的一种架构:
? 服务注册中心主要是维护各个应用服务的ip◆port列表,并保持与各应用服务的通讯,在一定时间间隔内进行心跳检测,如果心跳不能到达则对服务IP列表进行剔除,并同时通知给其它应用服务进行更新.同样要是有新增的服务进来,应用服务会向注册中心进行注册,服务注册中心将通知给其它应用进行更新.每个应用都有需要调用对应应用服务的地址列表,这样在进行调用时只要处理客户负载杂均衡即可.
第二段:微服务注册中心
①Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等.
先来看一下euraka的架构图:
Register:服务注册
Renew:服务续约
Fetch Registries:获取注册列表信息
Cancel:服务下线
DiscoveryManager.getInstance().shutdownComponent();
Eviction 服务剔除
自我保护机制:
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语言开发,用于实现分布式系统的服务发现与配置的等管理.
特性:
当我们的Consumerl消费者请求Prodcuer的是,会先从Consul获取到存贮Producter的数据(地址IP 和端口等)的临时表,从这个临时表里面任选一个Producr是的IP和Port,进行服务的请求
近几年诞生了很多微服务框架,比如JAVA的Spring Cloud、Dubbo;Golang的GoKit和GoMicro以及NodeJs的Seneca.几乎每种主流语言都有其对应的微服务框架.
Go在微服务框架中有其独特的优势,至于优势在哪,自行google.
①.、GoKit框架
这是一个工具包的集合,可以帮助攻城狮构建强大、可靠和可维护的微服务.提供了用于实现系统监控和弹性模式组件的库,例如日志、跟踪、限流、熔断等.
基于这个框架的应用程序架构由三个主要的部分组成:
传输层:用于网络通信,服务通常使用HTTP或者gRPC等网络传输协议,或者使用NATS等发布订阅系统相互通信.
服务成:具体的业务逻辑实现
这是一个基于Go语言实现的插件化RPC微服务框架.提供了服务发现、负载均衡、同步传输、异步通信以及事件驱动等机制,尝试简化分布式系统之间的通信,让开发者更专注于自身业务逻辑的开发.
GoMicro的设计哲学是可插拔的架构理念,提供了可快速构建系统的组件,并且可以根据自身的需求对GoMicro提供的默认实现进行定制.所有插件都可在仓库github.com/micro/go-plugins 中找到.
以上就是土嘎嘎小编为大家整理的微服务架构go语言相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!