聊聊微信微服务技术

转载 2018年01月01日 00:00:00

一,行业背景

互联网技术一直在快速演进当中,同时移动互联网与云时代来临,微服务架构由此应映而生。


如下图,是微服务在我国的百度搜索指数:


640?wx_fmt=png&wxfrom=5&wx_lazy=1


从图中可以看出,自 2013 前后微服务开始逐渐被大家关注,随时间推移搜索的人也越来越多,直至 2016 年爆发。


微服务架构的快速发展并广泛流行,和以下因素息息相关:


  • 互联网技术架构飞速演进,特别是底层硬件及芯片技术快速发展,后端服务器的能力越来越强大。多数情况下,单个业务已很难消耗完一整台服务器的资源或处理能力。

  • 移动互联网深度融合与应用,瘦客户端兴起,使得云端能力与承载变得更加重要。

  • 容器技术得到广泛认可与应用,轻量级协议、代码管理、新集成方法与工具等技术也越来越成熟。


近两年,微服务这个术语渐成热门词汇,但它不是一个全新架构,更不是一个包治百病的架构。那么,微服务架构与单体式架构相比优势体现在哪?这些优势又给开发模式、运维带来哪些痛点?


二,微服务架构的优势及痛点



微服务和单点服务的区别是什么呢?比喻来讲,单点服务是把所有的东西放在一个大盒子里,这个大盒子里什么都有。


微服务更像是车箱,每个箱子里包含特定的功能模块和物品,所有模块可以很灵活地拆分出来。


换言之,在单点服务中,所有的部件都在一个巨大的软件包中。在微服务架构下,有很多独立存在的小服务,通过 API 接口连接成庞大的系统。


相比过往的单体式应用架构,微服务架构优势明显,如:


  • 单个微服务更易理解、方便开发与维护。

  • 应用解耦,对整体应用交付而言,开发迭代更敏捷。

  • 技术选择更加自由,微服务不再需要限定统一的技术实现。

  • 微服务独立部署,应用更稳定,同时扩展更加容易与快速。

  • ……


同时,微服务架构的特点与优势在开发模式、运维等方面也带来很多痛点,如:


  • 微服务众多,容器编排与部署管理等会变得异常复杂。

  • 业务的容量管理变得更加困难,资源利用效率难以提升。

  • 监控的颗粒度增多,关联关系更加复杂。

  • 微服务故障恢复、调度需要更精细化。

  • ……


三,微信中两大典型微服务案例

熊普江老师表示,微信一直提倡敏捷开发与“大系统小做”,这其实就是微服务的理念与架构实现。



由于微信诞生于 2011 年,当时微服务架构的概念还没有普及,也就是说,微信的微服务架构在业界实施并落地相对较早。


微信中微服务案例有很多,这里主要分享服务布局、过载保护两大典型案例。


四,微信服务布局

微信的服务布局采用的是多地自治、园区互备架构。如下,是微信的服务布局示意图:


640?wx_fmt=png

  • 城市之间的数据是相对独立的。除了少数账号全球同步,大部分业务都希望做成电子邮件式的服务,各自有自身的环境在跑,之间使用类似于电子邮件的通信。

  • 城市间的后备则使用公网的 udp 通道。在城市内,使用三园区架构,每个园区是一套独立的系统,从接入、逻辑、存储每一层完全独立,可互相为对方提供备份。

  • 多园区形成整体服务能力。在园区内,由多机组成 set,互为容错,包含网络与电力也是独立的。这样的服务布局,不仅是微服务架构,而且考虑了容灾能力。


五,微信过载保护

过载保护的微服务架构,目的是确保核心服务可用。确保核心服务的可用性有如下三点:


  • 考虑问题应该是服务要有轻重分离,即一个服务里不能既有重的操作,又有轻的操作。

  • 队列控制,要了解一个请求在队列中等待的平均时间,从而决定是否要启动拒绝。

  • 组合命令式,由于微服务的调用链及层次可能会增多,后端服务也可能是多个。


假定后端有两个服务(A 服务与 B 服务),而前端调用需要依赖于 A、B 服务的组合结果,那么单个 A 或者单个 B 的轻微过载,就可能导致前端服务不可用,这是很严重的问题。这种情况下,就需要一个反馈机制。


如下,是过载保护的微服务架构示意图:

640?wx_fmt=png

如上图所示,整个系统基于反馈,把整个拒绝的信息全程传递。最右边是几个典型的服务,从一个 CGI 调用一个后台服务,再调用另一个后台服务,系统会在 CGI 层面就把它的重要程度往下传。


回到刚才前端调用 A、B 服务的例子,使用这样的一种重要程度传递,就可以直接拒绝那些相同用户的 20% 的请求,有效地解决单个服务轻微过载的问题。

推荐阅读:

技术:分布式事务架构实践

技术:分布式唯一ID极简教程

分享:2T架构师学习资料干货分享

觉得有帮助?请转发给更多人!

0?wx_fmt=png0?wx_fmt=png

架构师小秘圈,聚集10万架构师的小圈子!不定期分享技术干货,行业秘闻!汇集各类奇妙好玩的话题和流行动向!长按左侧图片,扫码加入架构师微信群!

微服务实战(三):深入微服务架构的进程间通信

【编者的话】这是采用微服务架构创建自己应用系列第三篇文章。第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使用微服务架构的优缺点。第二篇描述了采用微服务架构应用客户端之间如何采用API ...
  • zhouhaiqing0905
  • zhouhaiqing0905
  • 2015年08月03日 09:34
  • 4823

使用 API 网关构建微服务 & 微服务架构中的进程间通信

本期内容 微服务系列文章的第一篇介绍了微服务架构模式,讨论了使用微服务的优缺点,以及为什么微服务虽然复杂度高却是复杂应用程序的理想选择。 在决定以一组微服务来构建自己的应用时,你需要确定应...
  • jincm13
  • jincm13
  • 2016年09月10日 11:08
  • 5698

微服务理论与实践(五)-微服务之间的交互

Microservice架构模式中的“开”是各个服务的内部实现,而其中的“闭”则是各个服务之间相互沟通的方式   微服务必须使用进程间通信机制来交互。微服务架构有两类IPC机制可选,异步消息机制和同步...
  • sunhuiliang85
  • sunhuiliang85
  • 2016年10月30日 23:57
  • 6088

微cms微信营销服务平台 多源码 快速下载

快速搭建微信营销平台,坐等收取会员费!带给你全新的微信互动营销体验。 庞大的腾讯用户基数,据可靠的数据资料显示,在微信营销后的一年多时间内,微信的用户数量就达到了庞大的五亿,发展空间堪称恐怖,毫无疑...
  • u012326154
  • u012326154
  • 2013年10月25日 16:30
  • 634

微派微营销智能服务平台:微信营销最佳搭档

在11月18日的微信合作伙伴沟通会上,微信官方首度公布了微信的部分运营数据。微信产品部副总经理张颖透露,微信上线三年,已经覆盖全球200多个国家,发布了20多种语言版本,国内外月活跃用户超过2.7亿。...
  • u013130154
  • u013130154
  • 2013年12月12日 18:26
  • 697

微商的未来 微信切换软件(里面有黑技术额)今天已更新

转载于:https://www.52pojie.cn/thread-659909-1-1.html 我只是一个懂技术的搬运工 今天给大家分享一个我一直用的软件,智能切换闪电版,之所以现在才分享出来,是...
  • flyfly123456
  • flyfly123456
  • 2017年11月10日 14:57
  • 142

支付服务:支付宝,微信,银联详细代码案例 springMvc版

  • 2018年01月12日 10:36
  • 1.53MB
  • 下载

微信小程序会话服务nodejs版

  • 2017年12月01日 13:41
  • 2.53MB
  • 下载

微信小程序java后台代码(服务端)demo

  • 2017年11月29日 18:42
  • 1.94MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:聊聊微信微服务技术
举报原因:
原因补充:

(最多只允许输入30个字)