Go微服务精讲:Go-Zero全流程实战即时通讯教程

kaudmands · · 747 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

资料地址1:https://pan.baidu.com/s/1XEb6C8GfqTJslWaQUIMg-w 提取码:e2l8 资料地址2:https://pan.baidu.com/s/1_J3m6rTr-PK8C-kX3HSKUQ 提取码:9jh4 Go微服务系统精讲 Go-Zero全流程实战即时通讯 ( IM )——随着微服务技术的快速发展,其在各个领域都形成了一系列事实标准,在 Kubernetes 和容器技术加持下,云原生微服务已经成为了主流解决方案。而 Go 语言作为云原生领域最受欢迎的开发语言,正被越来越多的企业作为微服务开发的首选语言,其中比较流行的包括 Go-micro、Go-zero、Dubbo-go 等。作为 Dubbo 微服务体系中多语言实现的一员,在 2022 年 Dubbo-go 以微服务领跑者的角色积极拥抱云原生标准,探索了 Proxyless Mesh 形态,配合适配 Pixiu 云原生网关,形成了完善的 Dubbo-go 微服务生态矩阵。 一、微服务 什么是微服务(microservice)?这是企业界正在向计算界提出的问题。一个产品的可持续性取决于它的可修改程度。 大型产品如果不能正常维护,就需要在某个时间点停机维护。而微服务架构用细化的服务取代了传统的单体服务,这些服务定义了明确的 RPC 或消息驱动的 API 边界。 微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。 微服务带来了以下好处: 每个服务都可以由专注于此服务的团队独立开发。小团队可以通过在一组小的功能上工作来进行并行迭代。 开发人员可以自由选择开发技术,对新的开发人员来说,可扩展性很强。 微服务架构可以使每个微服务独立部署。对系统的单个组件支持持续集成(CI)和持续交付(CD)。 微服务架构使得每个服务都可独立扩展。利用松耦合的架构提供更轻松的软件替换。 微服务架构不与特定的技术相联系。 二、单体架构与微服务架构的区别 下图描绘了单体架构和微服务架构的结构图。 图的左边就是单体架构的示意图,如图所示:单体架构将所有的功能(如 UI、日志、数据层、系统逻辑、数据库等)都集成在一个系统中,像是一个紧耦合的架构。 相反,微服务是独立的实体,每个功能都是单独的服务,如日志服务、文件服务、系统逻辑服务等,更易于修改和替换,每个服务都可以通过各种远程传输机制进行沟通,如 HTTP、REST 或者 RPC。服务之间的交换的数据格式可以是 JSON 或者 Protocol buffers, 微服务还可以处理各种请求点,如 UI 和 API 客户端。 三、微服务框架 go-zero 的基本介绍 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 中的 api,rpc,数据库等涉及的代码,都可以给我们一键生成,无需耗费我们什么精力 只需要在生成的代码中填入自己的配置以及逻辑即可,咱们使用 go-zero 可以轻松做到如下效果: 轻松获得支撑千万日活服务的稳定性 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码 微服务治理中间件可无缝集成到其它现有框架使用 极简的 API 描述,一键生成各端代码 自动校验客户端请求参数合法性 大量微服务治理和并发工具包 go-zero go-zero整体上做为一个稍重的微服务框架,提供了微服务框架需要具备的通用能力,同时也只带一部分的强约束,例如针对web和rpc服务需要按照其定义的DSL的协议格式进行定义,日志配置、服务配置、apm配置等都要按照框架定义的最佳实践来走。 社区建设: go-zero已经是CNCF项目,做为一个后起的微服务框架,不得不说在国内社区生态建设和维护上,完美适配国内开源的现状,在微信群、公众号、各种大会等多渠道进行推广,社区也时常有文章指导实践。 go-kratos go-kratos整体上做为一个轻量级的微服务框架,B站开源项目; web和rpc服务的 DSL协议直接采用protobuf和grpc进行定义,采用wire做依赖注入、自动生成代码 。 框架定位于解决微服务的核心诉求。 社区建设:社区建设和维护上,算是做的中规中矩,官网更新一般,有公众号和微信群问题解答 tarsgo tarsgo做为tars这个大的C++重量级微服务框架下的go语言服务框架,腾讯开源项目; 对于有个好爹的这个事情,总是喜忧参半的;好处在于很多能力不用从头开始做起,直接依托母体;劣势就是独立性相对较差,要选用这个tarsgo的前提,就是要先选用tars这个大的框架。 社区建设: Tars已经是linux基础会项目,社群上做的还算可以,毕竟tars作为腾讯开源影响力最大的项目之一,有QQ、微信群。 dubbo-go dubbogo做为dubbo这个大的Java重量级微服务框架下的go语言服务框架,阿里开源项目;优劣基本跟tarsgo一样 社区建设: dubbo已经是apache基础会项目,社群上做的还算可以,有钉钉群。 go-mirco go-micro是一个轻量级的微服务框架,做为一个在2015年就开源的项目,在当时那个市面上开源的微服务框架稀少的年代,它是为数不多的选择。主要槽点就是作者重心做云服务去啦,相应的社区维护力度较弱。 社区建设:弱

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

747 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传