阿里云基于Go的微服务架构分享-爱码网


本站和网页 https://www.likecs.com/show-203367464.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

阿里云基于Go的微服务架构分享-爱码网
首页
前端技术
编程语言
人工智能
运维知识
资源下载
常用小工具
技术问答
阿里云基于 Go 的微服务架构分享
2022-01-22
作者介绍
花名聪心,阿里云技术专家,主要负责阿里云OpenAPI,Services  architectre 技术服务的实现。
云产品前端架构
众所周知,阿里是以 Java 开发为主,最近引用 GO 在微服务架构上面进行开发,本次分享也是围绕这个主题进行叙述。
图 1
图 1 所示,是我们最早期的前端微服务架构图,当时不存在API网关服务、天象全链路监控以及外部服务这几个模块,并且蓝色这部分也并没有被应用起来。因此进行了一场微服务重构过程,产生了最新的前端微服务架构图(图 2)。
图 2
图 2 是目前的前端微服务架构,其中,OpenAPI是前端入口;API网关目前被商业化,由它来调度内部的dubbo服务;其次是最为重要的中间件,由其支撑注册中心、控制台、阿里云日志服务、消息队列服务以及内部的天象全链路监控系统;外部服务主要是进行与其他云产品的交互,比如VPC、VPS等;驱动&接口服务也进一步的开发应用起来。下面着重介绍整个架构中的几个板块。
日志服务
图 3
在这么多微服务组件中,日志采集是不可或缺的,阿里云日志服务对象就是ELK,实际上它的成本是比较高的,而使用Kafka则成本要相对低很多。现在会提供很多中间的服务进行协调,方便进行业务统计工作(图 3)
API网关服务
  图 4  
网关服务位于整个架构的最上层;因为认证系统的存在,所以再使用老架构的形式则每一个对外服务都需要我们自己手动进行接入,这样会耗费很大的工作量,所以新版的架构将API网关服务放在最上层,一方面在认证服务方面省去了人力成本其次在流量控制上,也起到了关键性的作用(图 4)。
天象全链路监控系统
图 5
图 5 所示是天象全链路监控系统的界面,这一块在整个微服务架构中是不可或缺的一个服务。当架构微服务化后往往会造成链路变长的情况发生(图左所示)。使用天象可以对全链路进行监控。
Dubbo
Dubbo是一个RPC框架,在11-12年间名气都是比较响的,当时它有2000个节点,3B+ request,在阿里巴巴、京东以及当当网的使用度是比较高的。它最实用的地方主要在于以下几点:
1、服务动态注册&服务发现
2、SOA服务治理
3、转负载均衡
4、熔断、服务降级
图 6
图 6 所示是Dubbo服务治理图。其中包括了调度中心、监控中心、注册中心、治理中心这几项服务,如果要做到100%规范,那么图中的每个点都需要去遵守。因为阿里目前只有几百个节点,所以可以很放心的使用这个框架而不需要担心它有任何的性能问题。
图 7
图 7 所示。是讲Dubbo部署到可服务化的一个示意图,当应用起来后会启动 Repository,接下来comsumer便会开始服务了,所有应用都会收到通知,不管新版本、新接口或是新的服务器上线都会接收到通知。此时如果需要调用,便会去寻求最适合的方式;在此之上的Monitor,也会持续回报运维人员。其实关于Dubbo的未来规划,就是可以解决所有SOA的事情,目前还是人工的在执行这件事情,没有施行自动化方案,这也是有遗留的历史因素存在。
Micro-services complexity at 阿里云
阿里云前端架构的微服务化是一个必然的趋势,早在2014年业务增长并不显著,但是14年以后,随着云计算行业的发展,业务增长量也突飞猛进,因此我们不得不推翻此前的架构,重新构建新的架构系统,当然整个过程并非想象的那么容易,所以微服务化必须自然的引进,必须要做小,做简单,然后让整个产品可以快速推进。
前面提到,Dubbo、Spring解决了大部分SOA问题,理论上讲如果Dubbo服务拆解的很干净,那么我们理应很高兴。但是问题在于,如何能在拆解之后仍旧可以保持有规范的交付却是一个不容易解决的问题。所以当中我们也采取过很多策略,比如代理服务,但是在整个微服务过程中也会产生大量成本,如何降低又是新的需要解决的问题。
图 8
图 8 是阿里内部使用语言的开发人员的人数统计图,从图中可以看出,golang的使用人数其实是相对较少的,但是其增长速度却是最快的。那么是什么原因导致gopher数量的急剧增加,大部分人都知道Java可以比作为一个静态艺人,对于很多Java开发人员来说,历史遗留包袱比较重,培养一个能在业务系统上做支持的Java人员很难,但是若只是Spring开发人员,也未必是符合我们所需。
因此我们转型GO,GO的神奇在我们在使用gRPC时的一些感悟,grpc是一个高性能的开源RTC框架,gRPC
基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
图 9
图 9 所示是Go kit与 Dubbo的一些对比,关于Go kit的更详细的内容可以在gokit.io上进行了解。
分类:
技术点:
相关文章:
.NET Core 微服务架构 Steeltoe 使用(基于 Spring Cloud)
.NET Core 微服务架构 Steeltoe 使用(基于 Spring Cloud)
2021-06-04
【DevOps】B站微服务架构分享会 笔记
2021-12-01
基于Spring Cloud的微服务架构演变史
2021-08-03
基于SpringBoot和SpringCloud实现微服务架构
2021-05-20
简洁架构的思想,基于go实现
2021-12-10
清晰架构(Clean Architecture)的Go微服务: 设计原则
2019-12-30
【转】Go Micro(5)——架构与微服务的设计模式
2022-02-09
.NET Core 微服务架构 Steeltoe 使用(基于 Spring Cloud)
2022-02-28
基于SpringCloud的微服务架构设计
2021-06-23
清晰架构(Clean Architecture)的Go微服务: 编码风格
2020-02-03
清晰架构(Clean Architecture)的Go微服务: 日志管理
2020-01-03
猜你喜欢
微服务 架构 php+go
2022-01-07
基于SpringBoot、SpringCloud、Docker微服务架构实战,资源分享
2021-12-01
清晰架构(Clean Architecture)的Go微服务
2020-02-17
基于netty的微服务架构
2021-12-29
基于Spring Cloud的微服务架构
2021-10-10
分享-SpringCloud微服务架构图
2019-11-05
【转】基于 Go Micro 框架构建一个简单的微服务接口
2022-01-31
「微服务架构」基于Nginx的三种微服务参考架构
2021-08-21
基于 swoole 的框架微服务架构
2022-02-21
基于 Docker 的微服务架构实践
2022-01-07
相似解决方案
NestJs 基于微服务事件的架构
2021-09-04
基于 Docker 的微服务架构中的 Consul
2017-08-28
java中基于RESTful API的微服务架构
2017-10-15
用于服务间通信的基于 gRPC 的微服务架构
2020-07-22
微服务架构:跨服务数据共享
2015-06-10
我应该转向基于微服务的架构吗?
2018-04-07
基于微服务的架构中的关键字搜索
2015-10-18
微信小程序可以使用阿里云VPS服务器吗?
2021-12-05
微服务架构在哪里配置 SSL
2020-05-31
如何绘制基于微服务架构的用例图?
2020-08-25
热门标签
Java
Python
linux
javascript
Mysql
C#
Docker
算法
前端
SpringBoot
Redis
Vue
spring
.net core
设计模式
.net
数据库
c++
kubernetes
js
数据结构
微服务
大数据
机器学习
Android
程序员
Go
面试
JVM
PHP
ASP.net core
git
CSS
后端
k8s
mybatis
多线程
Nginx
爬虫
golang
React
devops
Django
Spring Boot
云计算
深度学习
架构
容器
分布式
云原生
常用小工具 更多
JSON格式美化工具
在线XML转JSON/JSON转XML工具
JSON格式化编辑和美化工具
密码安全性在线检测
在线计算器
在线高级科学计算器
贷款计算器/房贷计算器
在线RGB、HEX颜色代码生成器
在线WEB安全色查询工具
网页颜色搭配表及颜色搭配技巧
By 2022 likecs 版权所有,本站所有数据收集于网络如有侵犯到您的权益请联系zengyin969@gmail.com进行下架处理。
粤ICP备12038626号Powered By WordPress