本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:恒丰银行微服务架构优化实践(3)

时间:2017-07-19 14:48来源:118论坛 作者:118KJ 点击:
消耗 CPU 较多的复杂迭代算法或内存计算任务,微服务化后可以更好地支持分布式并行处理。如蒙特卡洛模拟等算法,可以切分搜索空间,发送给不同节点

消耗 CPU 较多的复杂迭代算法或内存计算任务,微服务化后可以更好地支持分布式并行处理。如蒙特卡洛模拟等算法,可以切分搜索空间,发送给不同节点去做实际运算。

具备独立的业务能力的软件模块,接口比较稳定或者可以设计得比较宽泛(如通过可变参数列表形式),多个微服务化的业务组件可以组合成更加复杂的业务功能服务。

InfoQ:最终选择 Akka 作为微服务基础软件框架的原因是什么?更关注 Akka 的什么功能特性?

曾光尧:Akka 作为高性能、高度容错、支持弹性部署的成熟方案,Actor 模式的特性可以很好地用来实现微服务。其详细特点描述如下:

Akka 消息处理的高性能。单节点每秒可完成 5000 万消息处理。

资源需求低,每 GB 内存可容纳 250 万 Actor 实体对象。

Akka 的成熟度。是著名的 Spark 大数据平台的底层架构软件,也被 BBC、Amazon、Cisco、eBay、Groupon 等众多大企业采用,并在 2015 年获得 JAX 创新开发技术大

基于强大的 Scala 语言编写,编实现效率高,可以和其他 JVM 语言类库相互调用。

角色(Actor)并发编程模型较好地屏蔽了底层通讯细节和线程任务调度细节,编程较容易;基于消息传递机制实现服务协同和数据共享,消除资源锁竞争。

来源于 Amazon Dynamo 系统的 Gossip 集群通讯协议,经过 Amazon 云服务平台的长期技术验证,可靠性高。可支持 Cluster Sharding、Cluster Singleton、Distributed Publish Subscribe、Distributed Data 等多种集群应用场景。

父子角色对象(Actor)的监管者(Supervisor)模式。父角色对象可以捕获子角色对象的异常并自动执行不同的重启策略,极大提高了系统的容错性和服务可用性,减少高可用性代码编写难度。

通过软件路由器 (router) 和执行分发器 (dispatcher) 组合实现多种 Actor 并发和负载均衡算法策略,构建软件弹性部署能力。其中路由器支持如轮询调度(round robin)、随机调度 (random)、广播(broadcast)、一致性哈希(Consistent Hashing)等任务分配算法;执行分发器构建独立线程池,隔离不同类型 Actor 之间的 CPU 资源竞争影响。

InfoQ:据了解,恒丰自研基于 Akka 的微服务架构平台 Skyline 进行相关组件开发,那么最后实现了那些需求,效果如何?Skyline 在恒丰内部还发挥了哪些作用?

曾光尧:Akka 等微服务软件框架上的应用开发存在工程实现难度,主要表现为如下三点:

受限于语言本身对分布式并行处理的支持程度不高,大部分基于微服务或异步 IO 框架的软件开发需要关注异步通讯的交互细节,容易陷入嵌套异步回调的编程陷阱,不符合大部分程序员顺序编程思维的习惯,开发和调试都非常困难。

基础平台层面缺乏应对峰值压力下的自适应调整能力,容易将访问压力传导到数据库等更脆弱的基础软件设施,导致系统整体崩溃。

缺乏在运行时对不同服务质量的差异化管理机制,在云计算环境下的动态部署能力受限。

针对上述技术难点,我们在 Akka 的基础上自研了 Skyline 微服务架构平台,针对上述三类问题,我们的技术解决方案为:

独立自主设计实现了支持分布式并行计算的新编程语言 Zebra,实现多种并行处理范式,支持微服务的异步并行调用。

微服务组件化,实现服务组件容器,实现服务组件实例的弹性创建和销毁,服务请求的排队、超时清理、过载阻断,保护后端较脆弱的服务设施,提供稳定的服务质量。

服务组件容器支持不同微服务的并发实例数、使用线程资源池、任务队列长度、超时时间、部署物理节点等动态配置项,可以在运行时动态调整,以支持差异化的服务质量。

Skyline 平台最终实现的效果为:

实现高并发低延迟服务能力。Zebra 分布式并行服务语言通过增强语法支持异步并行服务调用,通过数据并行、指令并行、Pipeline 等三种方式提升程序的运行速度,降低响应延迟时间;Zeroutine 协程调度框架减少线程切换成本,构建完全无阻塞的程序运行机制,有效提高服务吞吐量。

提供稳定可靠服务输出。服务组件容器技术实现微服务实例的按需自适应调整和峰值压力下的排队缓存、超时清理和过载阻断机制;组件容器隔离程序缺陷影响,实现异常崩溃后的快速重启;并通过 Zebra 语言的契约式编程范式提升代码质量,隔离不同模块和应用系统的错误影响。

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容