众所周知,阿里是以 Java 开发为主,最近引用 GO 在微服务架构上面进行开发,本次分享也是围绕这个主题进行叙述。
日志服务
在这么多微服务组件中,日志采集是不可或缺的,阿里云日志服务对象就是ELK,实际上它的成本是比较高的,而使用Kafka则成本要相对低很多。现在会提供很多中间的服务进行协调,方便进行业务统计工作(图 3)
API网关服务
网关服务位于整个架构的最上层;因为认证系统的存在,所以再使用老架构的形式则每一个对外服务都需要我们自己手动进行接入,这样会耗费很大的工作量,所以新版的架构将API网关服务放在最上层,一方面在认证服务方面省去了人力成本其次在流量控制上,也起到了关键性的作用(图 4)。
天象全链路监控系统
图 5
图 5 所示是天象全链路监控系统的界面,这一块在整个微服务架构中是不可或缺的一个服务。当架构微服务化后往往会造成链路变长的情况发生(图左所示)。使用天象可以对全链路进行监控。
Dubbo
Dubbo是一个RPC框架,在11-12年间名气都是比较响的,当时它有2000个节点,3B+ request,在阿里巴巴、京东以及当当网的使用度是比较高的。它最实用的地方主要在于以下几点:
1、服务动态注册&服务发现
2、SOA服务治理
3、转负载均衡
4、熔断、服务降级
阿里云前端架构的微服务化是一个必然的趋势,早在2014年业务增长并不显著,但是14年以后,随着云计算行业的发展,业务增长量也突飞猛进,因此我们不得不推翻此前的架构,重新构建新的架构系统,当然整个过程并非想象的那么容易,所以微服务化必须自然的引进,必须要做小,做简单,然后让整个产品可以快速推进。
前面提到,Dubbo、Spring解决了大部分SOA问题,理论上讲如果Dubbo服务拆解的很干净,那么我们理应很高兴。但是问题在于,如何能在拆解之后仍旧可以保持有规范的交付却是一个不容易解决的问题。所以当中我们也采取过很多策略,比如代理服务,但是在整个微服务过程中也会产生大量成本,如何降低又是新的需要解决的问题。
图 8 是阿里内部使用语言的开发人员的人数统计图,从图中可以看出,golang的使用人数其实是相对较少的,但是其增长速度却是最快的。那么是什么原因导致gopher数量的急剧增加,大部分人都知道Java可以比作为一个静态艺人,对于很多Java开发人员来说,历史遗留包袱比较重,培养一个能在业务系统上做支持的Java人员很难,但是若只是Spring开发人员,也未必是符合我们所需。