加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

华为内部如何实施微服务架构?基本就靠这5大原则

发布时间:2021-01-10 00:33:06 所属栏目:安全 来源:网络整理
导读:副标题#e# 《华为内部如何实施微服务架构?基本就靠这5大原则》要点: 本文介绍了华为内部如何实施微服务架构?基本就靠这5大原则,希望对您有用。如果有疑问,可以联系我们。 随着业务的发展,代码量的膨胀和团队成员的增加,传统单体式架构的弊端越来越凸显

服务调用方式:同步调用、异步调用、并行调用.一次服务调用,通常就意味着会挂一个服务调用线程.采用异步调用,可以避免线程阻塞,提升系统的吞吐量和可靠性.但是在实际项目中异步调用也有一些缺点,导致使用不是特别广泛:

  • 需要写异步回调逻辑,与传统的接口调用使用方式不一致,开发难度大一些.
  • 一些场景下需要缓存上下文信息,引入可靠性问题.

并行调用适用于多个服务调用没有上下文依赖,逻辑上可以并行处理,类似JDK的Fork/Join,并行服务调用涉及到同步转异步、异步转同步、结果汇聚等,技术实现难度较大,目前很多服务框架并不支持.采用并行服务调用,可以把传统串行的服务调用优化成并行处理,能够极大的缩短服务调用时延.三种服务调用方式的原理图如下:

微服务故障隔离:线程级、进程级、容器级、VM级、物理机级等.关键技术点:

  • 支持服务部署到不同线程/线程池中.
  • 核心服务和非核心服务隔离部署.
  • 为了防止线程膨胀,支持共享和独占两种线程池策略.

谈到分布式,就绕不开事务一致性问题:大部分业务可以通过最终一致性来解决,极少部分需要采用强一致性.

具体的策略如下:

  • 最终一致性,可以基于消息中间件实现.
  • 强一致性,使用TCC框架.服务框架本身不会直接提供“分布式事务”,往往根据实际需要迁入分布式事务框架来支持分布式事务.

微服务的性能三要素:

  • I/O模型,这个通常会选用非堵塞的,Java里面可能用java原生的.
  • 线程调度模型.
  • 序列化方式.

公司内部服务化,对性能要求较高的场景,建议使用异步非阻塞I/O(Netty) + 二进制序列化(Thrift压缩二进制等) + Reactor线程调度模型.

最后我们一起看下微服务的接口兼容性原则:技术保障、管理协同.

  • 制定并严格执行《微服务前向兼容性规范》,避免发生不兼容修改或者私自修改不通知周边的情况.
  • 接口兼容性技术保障:例如Thrift的IDL,支持新增、修改和删除字段、字段定义位置无关性,码流支持乱序等.
  • 持续交付流水线的每日构建和契约化驱动测试,能够快速识别和发现不兼容.
作者介绍
李林锋,2007年毕业于东北大学,2008年加入华为,从事电信软件的架构设计和开发.8年Java NIO通信框架、网关平台和中间件设计和开发经验,精通Java NIO、Netty和Mina等NIO通信框架,《Netty权威指南》作者,目前从事云平台相关的架构设计和开发.、
文章出处:聊聊架构(公众号ID :archtime)

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读