`
大涛学长
  • 浏览: 105963 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

新网银行微服务转型实践

阅读更多
![lADPDgQ9rPAlxufNAQ_NAmw_620_271_jpg_620x10000q90g](https://yqfile.alicdn.com/f623b45f900c40643af84f5845888eb5dbcabf4d.jpeg)

Dubbo 开发者日活动成都站

本文整理自谢延泽先生在 Dubbo 开发者日成都站活动中的演讲,主要分享关于微服务转型的内容,也总结一下这些年作者在微服务领域的一些经验。

![lADPDgQ9rPAlxunNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/11e0b244d1265b72d2f63c32e12074693ba7d364.jpeg)

2012 年 James Lewis 在波兰第 33 次 Degree in Kraków 会议上分享了一个案例,名称是 “Micro Services - Java, the Unix Way”。在这个分享里,James Lewis 分享了在 2011 年中参与的一个项目中所采用的一系列实践,以 UNIX 的哲学重新看待企业级 Java 应用程序,并且把其中的一部分称之为“ Micro-Services ”。总结了五大特征: 
Small with a single responsibility —— “小到只有单一原则”

*   Containerless and installed as wellbehaved Unix services —— “去容器化并且作为 Unix Service 安装”
*   Located in different VCS roots ——“分布在不同的版本控制代码库里”
*   Provisioned automatically ——“自动初始化”
*   Status aware and auto-scaling ——“关注状态和自动扩展”

2014 Martin Fowler 试图将 James Lewis 的微服务定义进行一般化推广,使其不光可以在不同的语言架构和技术栈上使用。又可以兼顾敏捷、DevOps 等其它技术,成为一个架构的“最佳实践”集合。提出 9 大特征:通过服务组件化、围绕业务能力组织、是产品不是项目、智能端点和哑管道、去中心化治理、去中心化数据管理、基础设施自动化、为失效设计、演进式设计

2016年 Sam Newman 《Building Microservice》4个特征 7大原则。

**4 大特征:**可以独立部署。通过网络通信。对消费方的透明。尽可能降低耦合,使其自治。

**7 大原则**:围绕业务概念建模、接受自动化文化、隐藏内部实现细节、让一切都去中心化、可独立部署、隔离失败、高度可观察。

![lADPDgQ9rPAlxurNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/38052854a631eb40c8f50d0494b765cf4bb7f460.jpeg)

这里澄清一个观点,在工作过程中偶尔会听到某些同学说,我使用了 Dubbo ,使用了 spring-boot ,或者使用了 Spring-Cloud ,我开发出来的系统就是微服务。个人观点,微服务是一个架构风格或者架构原则,与实现系统的框架无关。比如:一个系统满足了上面的特征和原则,使用 WebService 通讯,难道就不是微服务吗?当然实际实施过程中应该选择一个轻量级的通讯框架。

![lADPDgQ9rPAlxuvNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/45c44673ce4d323a4a41f9d7bdeef56bdd35085c.jpeg)

微服务从 2014 年在国内开始传播,到现在已经有 5 年时间里,关于微服务的优点论述的文章有很多,比如逻辑清晰、简化部署、可扩展、灵活组合、技术易购、故障隔离等等这就不做详细展开。

全面微服务化带来的挑战
-----------

![lADPDgQ9rPAlxuzNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/fd51c6745bbd6e690944807909b2112095b37acb.jpeg)

**1\. 可用率降低**

全面微服务化之后,原先的单个应用可能会拆分为多个独立进程。为避免进程之间争用资源,一般公司都会独立部署,即单个虚拟机内只部署一个 jvm 进程。由此带来了更多服务器、网络设备、安全设备,这些硬件设备的可靠性都会影响到业务连续性。

服务跨进程间通讯,必然要选择一种通讯协议、序列化框架,额外引入的代码可靠性也会对整体的可用性造成影响。 
因此,微服务的设计是需要面向故障进行设计,在设计要考虑重试、幂等、故障隔离、熔断、降级等等。

**2\. 事务复杂度**

微服务拆分后,虽然按照领域模型做了解耦,但不可避免会带来分布式事务问题。目前分布式事务在社区也有一些解决方案和开源框架,方案有基于消息队列最终一致、TCC 分布式事务框架以及自动化的分布式事务框架,例如 Seata 等,但分布式事务的处理,对开发人员设计要求比较高,使用成本较高。

![lADPDgQ9rPAlxu7NAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/a0d8cefcabf47cb1c308a3e3102e9ca5743c1746.jpeg)

在拆分的时候,建议还是尽可能避免分布式事务,引入分布式事务框架要评估成本和收益。

**3\. 运维复杂度**

当一个单体应用拆分为多个微服务之后,应用数量会大幅增加。如果没有一个可靠稳定的运维平台或资源编排平台(如 k8s ),全面微服务化,对运维就是一个灾难,工作量的大幅增加,直接会影响系统稳定性进而影响到业务连续性。 
![lADPDgQ9rPAlxvHNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/bd83d334451d1abf177847d33fda370c24867c2b.jpeg)

**4\. 调试优化复杂度**

应用拆分后,业务调用关系变复杂,调用链整体变长。如果没有一套合适的调用链追踪平台,很难定位到整个系统的性能瓶颈,调优成本很高。另一个问题是,生产环境业务数据异常时,由于调用链过长,如果没有规范的 Request、Response 日志,很容易造成各服务之间相互甩锅,难以定位问题。全面微服务化之后,由于众多的服务节点,调优排查错误更加依赖于日志平台,高性能的日志平台也会提高效率。

![lADPDgQ9rPAlxvPNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/b6f4f51d8064326d2a1bffb649792829c0093fc6.jpeg)

**5\. 测试难度**

在单体应用的时候,调用链路短,一般都是做黑盒测试,测试人员无需了解复杂的业务实现。而进行微服务改造后,单个业务可能会由多个服务组合编排完成,如果继续做黑盒测试,意味着必须等待所有服务开发完成之后才能进行,导致测试周期边长、定位困难,做边界测试需要更多的测试用例才能覆盖,测试整体成本会变高。这种情况下,单元测试、单系统测试的重要性就凸显出来了。如果需要做单系统测试,可能需要 mock 被调用的服务,通讯协议使用 http 还好,社区有很多开源的框架可以使用。如果是 RPC 框架,意味着需要准备一套好用的 mock 测试系统才能支撑单系统测试。

![lADPDgQ9rPAlxvbNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/6273c6ed63b070b8113c793f5eaff3fc8b310c2f.jpeg)

**6\. 聚合查询**

在领域建模的时候,一般是按照用户角度去划分,而运营需求与用户需求天生不是一个维度的。举个例子:按用户维度领域建模,会划分用户服务、订单服务,用户和订单数据存储在不同的数据库,假设运营有一个需求是查询某个年龄段用户的订单,在用户达到千万级的时候,这种需求对微服务体系是个灾难。需要一个强大的大数据平台对数据按业务维度进行聚合,才能满足运营的查询需求和报表功能。 
![lADPDgQ9rPAlxvjNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/c695f3da9754c188ee368dff1421fe66dad9bde4.jpeg)

微服务拆分原则
-------

![lADPDgQ9rPAlxvvNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/db494b0cf2b4a3ce84904aed392fe1c5e43a2fa1.jpeg)

微服务拆分原则中,特别需要提到的是康威定律。

**康维定律**简单来说就是系统设计(产品结构)等同组织形式,每个设计系统的组织,其产生的设计等同于组织之间的沟通结构。如果单个服务由不同组织管理,需求无法达成统一,面临着令出多头、需求干扰的风险。

**伸缩需求**,同一个进程之内的不同业务功能,有时在业务量方面会出现较大的差异,具体要求的进程数量会有较大差别,这样的模块锁定在同一进程之内,势必会造成资源的浪费。

**部署频率**,同一个交付物内不同的组件有着不同的上线频率,会大大的提高上线流程的发生频率,会造成较大的人员浪费。

**修改的相关性**,如果同一交付物内的不同组件,经常会被同步修改,这可能说明,如果发生拆分,这两个模块应该是”在一起“的。

**领域建模**,针对业务领域,引入限界上下文(Bounded Context)和上下文映射 (Context Map)对业务领域进行合理的分解,识别出核心领域(Core Domain) 与子领域(SubDomain),并确定领域的边界以及它们之间的关系。依据核心领域和子领域划分微服务边界。

对于一个单体应用,拆分过程应该是循序渐进、逐步拆分、由简到繁、由粗到细,是一个渐进的过程。例如先将有明显边界的业务拆分为独立服务,无法明细边界的先混在一起,等业务需求逐步清晰后再拆。拆分时先拆分为几个相对较粗粒度的服务,根据业务需求情况,逐步将粗粒度的服务中相对稳定,可以沉淀的业务拆分为独立服务。在这个过程中,原有的单体应用也可以承担部分兼容能力,在改造完成前,不对外部系统造成过大的影响。 
![lADPDgQ9rPAlxvzNAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/0e539a449f55a11a69ca9c0a2cf294ec7d2ca3b3.jpeg)

微服务的拆分是跟业务需求强相关的,如果业务需求变更不多、相对稳定,处理的请求并发量不高,单体应用的稳定性和可维护性更好,更加适用。

总结
--

微服务不是银弹,是用来处理海量用户、业务复杂和需求频繁变更场景下的一种架构风格。引用一句话“好的架构是演化出来的,而不是设计出来的”。任何一种架构的引入,都会带来利弊两个方面的影响,如何平衡才最重要。

四川新网银行是全国三家互联网银行之一,于 2016 年 12 月 28 日正式开业。新网银行注册资本 30 亿元,由新希望集团、小米、红旗连锁等股东发起设立,是银监会批准成立的全国第七家民营银行,也是四川省首家民营银行,同时也是全国第二家获得国家高新技术企业认定的银行。新网银行坚持“移动互联、普惠补位”的差异化定位,以及“数字普惠、开放连接”的特色化经营,着力打造成为一家数字科技普惠银行,依托领先的金融科技能力、稳健的大数据风控技术和高效的互联网开放平台运营模式,服务小微群体、支持实体经济、践行普惠金融。截止目前服务用户数 2900 多万,累计放款 9000 多万笔。 
![lADPDgQ9rPAlxv3NAtDNBQA_1280_720_jpg_620x10000q90g](https://yqfile.alicdn.com/c95df76ed361fd85f55d8aa535a25281046e437e.jpeg)

**作者信息:**谢延泽,目前就职于新网银行,负责技术中台建设,核心系统技术架构设计。关注云原生领域,探索在金融行业实践思路。

 

 

[原文链接](https://yq.aliyun.com/articles/727318?utm_content=g_1000090493)

本文为云栖社区原创内容,未经允许不得转载。
分享到:
评论

相关推荐

    银行业微服务转型实践.pdf

    在银行业,微服务转型往往需要慎重考虑,因为金融系统的稳定性至关重要。实践中,采用合作共建的方式可以快速构建服务,但可能面临以下问题: 1. **设计局限**:初期可能未充分考虑分布式架构。 2. **技术栈不统一*...

    智能网络加速民生银行数字化转型.pdf

    【描述】:本文着重探讨了智能网络在民生银行数字化转型过程中的关键作用,展示了如何利用新技术提升银行的服务能力和业务转型速度。 【主要内容】: 随着数字化时代的到来,银行必须面对客户群体的变化、渠道形态...

    金融行业分布式架构转型实践.pdf

    金融行业分布式架构转型实践的知识点涵盖了多个方面,从云原生分布式架构的建设到微服务架构的应用,从高并发处理能力的提升到业务敏捷化的实现,下面将详细展开相关知识点。 ### 金融行业数字化背景 随着数字化...

    DevOps落地实践合集.zip

    大型Scrum实践银行产品敏捷转型与DevOps实践经验分享 如何基于 Jenkins 支撑腾讯上千产品的CICD SecDevOps工具链 券商DevOps转型—平安证券容器化实践之路 招行如何基于 K8S 容器技术打造 DevOps 流水线 民生银行的...

    【重磅】最新AIOps智能运维实践方案资料大合集(62份).zip

    浙江移动AIOpsDev运维转型实践 制造业全栈式监控一体化智能运维平台 智能开发 高效运维 智能运维的实用性和易用性探索 智能运维分析领域中的算法研究和场景探索 智能运维赋能的58集团系统稳定性建设 智能运维体系下...

    构建新一代核心银行系统全面推动数智化转型[18页PPT].pptx

    ### 构建新一代核心银行系统全面推动数智化转型 #### 一、项目背景与意义 随着金融科技的快速发展,银行业正面临着前所未有的挑战与机遇。为了应对这些变化,吉林银行提出了“10+2”改革变革战略,并将金融科技...

    某股份制银行容器云平台建设实践经验.docx

    相比之下,容器技术不仅能够有效解决上述问题,还在微服务架构、DevOps实践及分布式计算等方面展现出显著优势,因此被视为构建新一代数据中心基础设施的理想选择。 #### 二、建设容器云平台的意义 **1. 让应用真正...

    银行一体化监控平台建设最佳实践.docx

    【银行一体化监控平台建设最佳实践】 随着金融行业的快速发展,银行面临着越来越复杂的IT...通过理解和实施最佳实践,银行可以构建一个强大、灵活且适应性强的监控解决方案,从而更好地支持其业务发展和数字化转型。

    银行IT行业深度报告:分布式 新周期.rar

    分布式数据库是银行业转型的关键技术之一,它能解决单体数据库的性能瓶颈,实现数据的水平扩展,如Oracle RAC、Hadoop HBase等。 2.2 微服务架构 微服务架构将大型应用拆分为多个小型、独立的服务,每个服务都能...

    FINCUBE银行4.0的数字核心解决方案.pptx

    新的架构不仅仅是X86硬件与开源软件的结合,而是通过分布式计算、分布式数据库和分布式存储以及微服务架构来实现转型。 2. **Fincube简介** Fincube是为银行4.0时代设计的数字核心解决方案,它具备事件驱动的架构...

    深度报告:银行核心系统坚守者,分布式应用开拓者.rar

    深度报告:“银行核心系统坚守者,分布式应用开拓者”聚焦于银行信息技术领域的核心议题,主要探讨了在数字化转型浪潮中,传统银行核心系统的演变以及分布式应用的重要角色。这份报告可能是由信达证券发布的,对神州...

    2020人工智能与机器学习创新峰会PPT汇总.zip

    敏捷测试团队转型实践 二、大规模机器学习算法 快速深度学习训练优化算法 三、高效运维 构建全链路数据度量体系、实现DevOps数据驱动闭环 既快又好 DevOps为小红书全员质量保障赋能 浙江移动AIOpsDev运维转型实践-...

    2021 QECon全球软件质量&效能大会(上海站)PPT汇总(57份).zip

    2021 QECon全球软件质量&效能大会(上海站)PPT汇总,共57份。 2021 QECon全球软件质量&效能大会上海站聚焦于“数据智能、协同开放、拥抱云化、FinTech质效...平安银行的混沌工程实践 全链路接口测试用例自动生成回归

    云原生实践技术白皮书.docx

    中国的云原生产业正处在快速发展阶段,各种新技术和实践不断涌现,推动着企业向更高效的云上服务转变。 云原生架构的关键技术包括容器技术、服务网格、Kubernetes等,它们是实现云原生的核心工具。容器提供了一种轻...

    腾讯专有云敏捷研发交付实践.pptx

    为了应对这些挑战,腾讯专有云应运而生,它提供了一种弹性的、全栈式的IT供应方案,借助智慧的数据和AI基础,以及互联网思维,助力企业实现数字化转型。 腾讯专有云的内部支撑体系包括需求管理、开发阶段、部署阶段...

    云环境下的网络流量采集探索与实践.docx

    随着金融科技(FinTech)的快速发展,商业银行正在加速数字化转型,借助云计算、大数据、人工智能等先进技术提升服务质量。民生银行作为一家有影响力的股份制商业银行,积极响应这一趋势,推动信息技术创新,并在...

    由核心固守到開放銀行的資安思維變革_-_以第一銀行為例.pdf

    【由核心固守到开放银行的资安思维变革】这一主题着重探讨了传统银行业向开放银行转型过程中,安全策略和思维模式的演变。第一银行作为案例,展示了如何从以核心系统为中心的安全防护转变为全面开放环境下的网络安全...

    银行容器云平台建设需求与设计.docx

    该银行的实践表明,容器技术平台能够很好地支持新的业务模式和业务容量。 基于业务发展的需求和金融科技的进步,许多传统银行正在规划自身的互联网金融战略和金融云平台。其中一个重要的组成部分是建立和推广适合...

    ACS原生云系列培训(总行)-2021.zip

    【ACS原生云系列培训(总行)-2021】是一份专门针对中国招商银行(CMB)总行员工...通过此次【CMB总行培训】,参与者不仅能掌握ACS原生云技术,还能了解到云计算在银行业的应用前景,为招商银行的数字化转型贡献力量。

Global site tag (gtag.js) - Google Analytics