【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

掌握 Go 微服务框架:从新手到专家

用户投稿2024-04-09热门资讯22

简介

随着微服务的日益普及,Go 已成为开发微服务的理想语言。它提供了高性能、并发性和可扩展性,使其非常适合构建健壮且响应迅速的分布式系统。本文将逐步指导您从零开始掌握 Go 微服务框架。您将学习从基础知识到高级技巧的一切知识,以便您可以自信地构建和部署自己的微服务。

入门

安装 Go 和必要的工具[下载 Go](安装 [GoLand](或其他 IDE确保您已安装 [Go Modules](创建您的第一个 Go 微服务1. 创建一个新的 Go 模块:```

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

一、服务注册中心的由来 假如没有服务注册中心,我们会干些什么事情呢? 在传统行业的项目架构中以下的方案最为常见了: 这种架构开发、部署都是最简单的,一般适用于中小企业访问量并不是太多的情况下,各个系统服务一台机器就搞定了。 系统之间的调用也是拿到对方的IP+PORT直接连接。 接下来可能因为应用B开始访问量大了,单台机器已经不能满足我们的需求,于是一些反向代理工具应运而出,其中比较常见的有Apache、Nigix,架构演变为: 相比之前的应用B的单台机器访问,这种nginx代理的方式减轻了服务器的压力,但是可能会出现Nginx挂了,那么整个服务也不可用,于是又来了这么一套架构: 这样看方案算是完美了吧。 然后事情并不是想象的那么一帆风顺,这还只是应用A调用一个应用B,如果应用A调用的可能是应用B、C、D、E...,这种完全就不知道他后面到底还想干嘛,这种架构看似可以,但是绝对会累死运维的(nginx的配置将会非常混乱,直接导致运维不干了)。 服务注册中心干些什么事情呢? 上面提到的那种靠人力(主要是运维干的事情)比较繁琐,还不好维护,有这么几点不方便:应用服务的地址变了、双十一搞活动服务器新增等等。 那么我们可以有这么的一种架构: 服务注册中心主要是维护各个应用服务的ip+port列表,并保持与各应用服务的通讯,在一定时间间隔内进行心跳检测,如果心跳不能到达则对服务IP列表进行剔除,并同时通知给其它应用服务进行更新。 同样要是有新增的服务进来,应用服务会向注册中心进行注册,服务注册中心将通知给其它应用进行更新。 每个应用都有需要调用对应应用服务的地址列表,这样在进行调用时只要处理客户负载杂均衡即可。 二、微服务注册中心 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。 它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 上面的话直接摘抄网络百科的内容,国内很多公司做分布式开发最初的选型大部分都是采用dubbo框架。 dubbo框架注册中心主要使用zookeeper。 zookeeper服务端与客户端的底层通讯为netty。 zookeeper采用CAP理论中的CP,一般集群部署最少需要3台机器。 先来看一下euraka的架构图: Register:服务注册 当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。 Renew:服务续约 Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。 建议不要更改续约间隔。 Fetch Registries:获取注册列表信息 Eureka客户端从服务器获取注册表信息,并将其缓存在本地。 客户端会使用该信息查找其他服务,从而进行远程调用。 该注册列表信息定期(每30秒钟)更新一次。 每次返回注册列表信息可能与Eureka客户端的缓存信息不同, Eureka客户端自动处理。 如果由于某种原因导致注册列表信息不能及时匹配,Eureka客户端则会重新获取整个注册表信息。 Eureka服务器缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。 Eureka客户端和Eureka 服务器可以使用JSON / XML格式进行通讯。 在默认的情况下Eureka客户端使用压缩JSON格式来获取注册列表的信息。 Cancel:服务下线 Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送请求后,该客户端实例信息将从服务器的实例注册表中删除。 该下线请求不会自动完成,它需要调用以下内容: ()(); Eviction 服务剔除 在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。 自我保护机制: 既然Eureka Server会定时剔除超时没有续约的服务,那就有可能出现一种场景,网络一段时间内发生了 异常,所有的服务都没能够进行续约,Eureka Server就把所有的服务都剔除了,这样显然不太合理。 所以,就有了 自我保护机制,当短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制,在该机制下, Eureka Server不会剔除任何的微服务,等到正常后,再退出自我保护机制。 自我保护开关(-preservation: false) consul推荐的架构图: Consul不像Euraka的部署那么简单,他是go语言开发的,需要运维单独部署,有提供java的客户端连接,采用的是CAP的CP。 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服务注册表结构Map<namespace, Map<group::serviceName, Service>>采用多层次Map结构,控制的颗粒度更细,支持金丝雀模式发布,心跳同步机制也更快速,服务更新更及时。

k8s 上 go 微服务实战: go 实现 istio bookinfo 微服务

在完成k8s 上快速部署 go 服务和k8s: istio 入门后, 继续 膨胀 , 使用 go 来实现 istio 提供的 bookinfo 微服务 demo

快速回顾之前的 blog:

涉及到的问题:

简单实践步骤:

先回顾一下 bookinfo 微服务应用的端到端架构:

包含 4 个微服务:

可以参考k8s 上 go 服务实战: 使用 helm 快速构建云原生应用快速部署 rating 服务

同理, 实现productpage detail服务

istio 几乎涵盖了 服务治理/流量控制 的方方面面, 作为服务治理层的基础设施 完全够用 , 问题开始从 行不行 , 转向 用哪些 , 让 业务层/devops工作流/k8s基础设施 用起来更爽

还需要解决的问题:

go语言云计算需要掌握哪些技术?

Go语言目前在云计算、容器虚拟化、分布式存储、网络爬虫、运维开发、Web开发、服务端开发、区块链、IoT等领域都有所应用。

服务端开发

以前你使用C或者C++做的那些事情,用Go来做很合适,例如日志处理、文件系统、监控系统等;

爬虫及大数据

Go语言天生支持并发,所以十分适合编写分布式爬虫及大数据处理;

网络编程

大量优秀的Web框架如Echo、Gin、Iris、beego等,而且Go内置的net/http包十分的优秀;

Paas云平台领域

Kubernetes和DockerSwarm等;

分布式存储领域

etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;

掌握 Go 微服务框架:从新手到专家 第1张

区块链领域

区块链里面有两个明星项目以太坊和fabric都使用Go语言;

容器虚拟化

大名鼎鼎的Docker就是使用Go语言实现的。

Go语言在云计算、大数据、微服务、高并发领域应用应用非常广泛。Go语言由Google公司开发,并于2009年开源,相比Java/Python/c等语言,Go尤其擅长并发编程,性能堪比C语言,开发效率肩比Python,被誉为“21世纪的C语言”。

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有废品回收功能的编程语言。

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

掌握 Go 微服务框架:从新手到专家 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!