网站首页 > 文章中心 > 其它

微服务架构go语言

作者:小编 更新时间:2023-10-01 14:02:18 浏览量:431人看过

微服务架构之服务注册与发现(一)

第一段:服务注册中心的由来

假如没有服务注册中心,我们会干些什么事情呢?

在传统行业的项目架构中以下的方案最为常见了:

这种架构开发、部署都是最简单的,一般适用于中小企业访问量并不是太多的情况下,各个系统服务一台机器就搞定了.系统之间的调用也是拿到对方的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 微服务GO-Micro -(2)Consul 基本认知

作用:基于GO语言开发,用于实现分布式系统的服务发现与配置的等管理.

特性:

当我们的Consumerl消费者请求Prodcuer的是,会先从Consul获取到存贮Producter的数据(地址IP 和端口等)的临时表,从这个临时表里面任选一个Producr是的IP和Port,进行服务的请求

go是啥 语言.

Go微服务--常见的微服务框架

近几年诞生了很多微服务框架,比如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语言相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章