微服务架构提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,形成分布式调用,为用户提供最终价值。

因此无论是创业型公司还是互联网独角兽企业,都将微服务架构当成一把利刃,用它解决项目在开发中所遇到的一切问题。

目前,能够支持微服务架构的开源技术有很多,那么微服务架构真的很容易吗?

通过互联网大会以及企业内部培训等方式和多家创业型公司的CTO和架构师交流后发现,很多项目以微服务架构规划开始,经过几次迭代后却以单体架构收尾,导致项目失败。

项目复盘后分析后得出,失败主要是由于缺乏实战经验,在架构设计阶段不能快速识别和有效解决微服架构的副作用所导致的。

实际上,微服务架构是一把双刃剑,其目标是将单体应用拆分为无状态的服务,通过横向扩展的方式解决项目的瓶颈,还能解决项目中出现的诸如代码冲突、模块耦合、项目交付质量下降、团队工作效率下降的问题、接口性能瓶颈等问题。

微服务架构的弊端也很明显,例如不能简单的通过一行注解来保证事务的完整性,容易出现数据不一致性情况。

那么,如何最简单可靠地使用分布式事务解决数据不一致的问题呢?

原本内部接口调用变成服务间的RPC调用,和单体应用相比,微服务架构下的接口性能反而更低了,这种问题该如何规避?

RPC调用过程因为网络问题不可避免出现重复调用情况,引发脏数据,因此在微服务架构下就要求每个接口都需要具备幂等性,那么,幂等性的常用解决方案有哪些?

微服务拆分没有技术标准,这就涉及到服务到底如何拆分比较合理,服务拆分颗粒度如何把握,一个服务的维护团队有多少人比较合适呢?

系统架构设计时先按功能拆分独立的服务,再引入Dubbo或者SpringCloud框架,系统就变成了微服务架构了吗?

为什么从单体变成微服务架构后原始接口反而变慢了?

微服务框架下的代码到底如何优化?

微服务架构转型后,测试团队还是按照之前的思维执行接口测试、功能测试,是否覆盖所有场景?

框架是否需要测试,服务与服务之间调用的异常该如何测试?

当这些技术问题摆在研发团队面前时,有些CTO开始犹豫了:

创业型公司技术架构选型在项目启动时就按微服务架构来设计项目是否必要?

若没有使用微服务架构那么项目运行过程中出现性能问题如何解决呢?

假设目前是单体架构,后续如何能平滑迁移到微服务架构?

随着项目团队逐步壮大以及在生产环境下不断的试错,团队经过多次线上实战,获得了很多宝贵生产的经验,终究会找到处理这些副用作的方法或技巧。

然而,当公司业务转型从单一业务线变成多元化的业务线后,似乎微服务架构下的系统又出现了新的问题:

各业务线之间的数据形成孤岛,同样的功能重复开发,有时为加快项目开发进度甚至从别的业务线直接把原功能的代码复制过来经过简单修改就完成新需求的开发,导致同类型的bug在每个业务线都会出现。

研发团队人数一直在不断的增加,但是总是感觉研发人员不够用。

此时,中台的出现恰好解决了这些问题,中台倡导企业级能力复用的思想,提倡将共性需求下沉到中台形成通用能力对外输出,以减少重复开发。因此,微服务架构转向中台架构,是仅喊口号还是需要怎么怎样系统的过程?

《架构演变实战:从单体到微服务再到中台》这本书通过真实案例实战的方式完整地讲述了如何从一个单体架构逐步转型到中台的历程!

内容简介

全书共9个章节:

第1章通过案例的方式讲解当单体架构遇到问题后如何去优化,其次通过一个失败的案例来描述在真正打算使用微服务架构前需要有哪些准备。

第2章则介绍服务如何拆分,以及标准化微服务架构的项目结构有哪些优势。

第3章则以概念和实战来介绍常用的微服务开始模式有哪些。

第4章则以实际案例为基础,描述如何从单体架构转型到微服务架构,在这过程中需要做哪些工作。

微服务重点在于每个服务的打磨,因此第5章则通过具体方案讲述如何去打磨每个服务,如何使用多级缓存、并行调用等手段来提高系统的吞吐量,如果使用混合限流来保障服务的稳定性,如何使用消息队列来做削峰等。网关是系统的统一入口,是微服务架构下非常重要的组件,当开源网关不满足业务需要,如何自研一套微服务网关呢?

第6章则以具体案例来介绍如何从0开始自研满足个性化需求的网关。微服务架构不仅开发模式需要转变,测试方式也需要转变,那么微服务架构下如何做系统测试,为什么又要引入混沌实验?

第7章站在测试角度去看微服务架构下的测试。

第8章去评估在既能保障服务稳定运行,又能避免浪费,通过科学有效的方式来以全链路压测平台为基础,系统科学的评估线上容量。

第9章则讲述如何从微服务架构走向中台,在这过程中需要如何去组建中台团队,需要公司的哪些支持配合等,如何把控中台的需求以及中台如何分阶段去考核等。

本书以真实案例为基础,再融合技术要点,逐步介绍如何设计出满足业务需求和性能需求的架构,是架构师参考的工具书,也是技术优化的参考书。

专家点评

微服务由于具有扩展性强、松耦合、便于敏捷开发等特性,在云计算时代被越来越多的组织所采用,采用微服务架构成为现代企业数字化转型的必经之路。

本书从单体应用开篇,详尽阐述了架构选型、拆分、实施、优化等微服务落地过程中所遇到的问题和解决的办法。全书深入浅出,既有整体的理论性指导,又有对Dubbo、Spring Cloud等微服务工具的详尽解释,对于微服务实践者有非常高的参考和学习价值。

——厉启鹏,Apache RocketMQ PMC M ember、RocketMQ中国社区发起人

初识本书作者是在Dubbo社区的线下沙龙中,后续在Dubbo社区的维护过程中我们也有过一些深入的交流与探讨。作者对Dubbo、微服务架构的深刻认知与丰富的实践经验让人印象深刻。

本书从当前流行的微服务架构出发,详细介绍了如何从单体架构升级为微服务架构,并以实战的形式从基础理论开始,逐步优化微服务架构的每个细节,最终升级为中台架构,整个升级思路讲解清晰。本书将理论和实践相结合,可作为微服务架构技术选型或实施的参考图书。

——刘军,Apache Dubbo PMC Chair、Dubbo3开源负责人

本书的最大特点是贴合业务来谈架构,针对不同的业务场景给出了有针对性、接地气的架构范式、演进思路及落地策略,同时融合了潘老师基于自身实战经验的深度总结。相信这本诚意之作定能让读者受益匪浅!

——李鑫,《微服务治理:体系、架构及实践》作者、天弘基金线上渠道技术负责人

从微服务的基础知识,到微服务的进阶知识,以及到最后的中台系统实战,作者条理清晰、由浅入深地介绍了服务架构所涉及的方方面面的关键技术和原理。建议相关从业人员阅读本书。

——王新栋,京东零售技术总监、《架构修炼之道》作者

本书从一个创业公司由单体架构向微服务架构转型的实际案例出发,向读者展示了构建分布式系统的全生命周期。通过翔实的案例剖析、深度的原理讲解及实操分享,读者不仅知其然,更能知其所以然。本书不失为一本可以常备案头的实用百宝书。相信不管是对分布式原理感兴趣的初学者,还是正着手分布式转型的资深工程师,通过阅读本书,都会有所收获。

——宋顺(齐天),蚂蚁集团高级技术专家、Apollo Config PM C

本书基于潘老师自己的经验,对中台架构及其实现做了很客观的阐述,利弊解释都颇富“实感”。没有完美的架构,也没有完美的方法,顾“此”极有可能失“彼”,这也再度验证了很多人对架构的看法。架构即平衡之道,架构即取舍之道。架构理论有共性,架构实施则充满个性,需要在实施中时刻提醒自己,在别人的经验和自己的环境中做好取舍,在别人的能力和自己的限制之间做好平衡。不然,本书第1章的“翻车”事故,就有可能在你实践本书第9章的设计时重现。大的成功不是很容易复现,大的失败却很容易再临。

——付晓岩,《企业级业务架构设计:方法论与实践》《聚合架构:面向数字生态的构件化企业架构》作者

不要再说微服务可以解决一切问题了相关推荐

  1. 微服务如何解决分布式事务

    在系统变的复杂后,分布式.微服务等架构技术,就要考虑到应用在系统中了.尤其数据量大了后,就需要对数据库进行拆分. 如:注册的用户数据,量大了后,就需要考虑分库分表 一旦数据库进行了分拆,那就出现很多头 ...

  2. ajax请求是宏任务还是微任务_微服务-如何解决链路追踪问题

    一.链路追踪 微服务架构是将单个应用程序被划分成各种小而连接的服务,每一个服务完成一个单一的业务功能,相互之间保持独立和解耦,每个服务都可以独立演进.相对于传统的单体服务,微服务具有隔离性.技术异构性 ...

  3. 微服务拆分解决的问题

    微服务架构变得越来越流行了.它是模块化的一种方法.它把一整块应用拆分成一个个服务.它让团队在开发大型复杂的应用时更快地交付出高质量的软件.团队成员们可以轻松地接受到新技术,因为他们可以使用最新且推荐的 ...

  4. ajax与微服务,微服务 - 如何解决跨域

    什么是跨域问题? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对 JavaScript 施加的安全限制. 什么是同源? 所谓同源是指,域名,协议,端口均相同 htt ...

  5. 一张图带你了解 Spring Cloud 微服务架构!

    点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取4T学习资料 Feign Eureka R ...

  6. 一张图了解 Spring Cloud 微服务架构

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://rrd.me/epgWJ Feign Eure ...

  7. 微服务失败的11个原因

    在过去的几年里,我对进行数字化转型的多家产品团队进行了架构审查.大多数团队都是遵循微服务架构来构建产品.他们完全有理由使用基于微服务的架构:更快的开发.更好的可扩展性.更小的独立团队.独立的部署.使用 ...

  8. 面向领域的微服务架构

    近来,一些关于面向服务架构的话题,特别是针对微服务架构的弊端这个话题上进行了大量的讨论.虽然在几年前,微服务架构受到很多人的青睐,因为它们提供了许多好处,如独立部署的灵活性.明确的所有权.系统稳定性的 ...

  9. 微服务架构下的测试之道

    作者:袁慎建,崇尚简约,热爱编程 && 运动健身 && 知识分享,擅长敏捷开发实践,持续集成 && 持续交付,关注代码整洁 && TDD ...

最新文章

  1. 基于双门限法的端点检测
  2. Coursera课程Python for everyone:chapter10
  3. c 文件夹打包解包_linux中文档的压缩与打包
  4. 前后端分离 常用工具汇总
  5. python变量设置为true_如果为true,则从现在起在Python中忽略变量
  6. Python2 获取docx/doc文件内容
  7. java初学者,应该怎么去学习?
  8. bing翻译api php,Auto Tag Slug使用 google翻译并删除bing api key提示
  9. itunes显示无法更新服务器失败怎么办啊,更新iTunes出现错误 iTunes更新失败解决方案...
  10. 嵌入式Linux开发常用命令总结
  11. UI(PS+AI)课程总结
  12. 安卓开发-最简单快速的仿微信聊天实现-附赠微信原生表情,QQ原生表情
  13. 二维码背后的隐忧:扫码点单之后,谁从餐桌上拿走了你的信息?
  14. C++11中类数据成员初始化方法详解
  15. 【调剂】重庆理工大学2022年硕士研究生招生调剂公告
  16. 动物派对怎么修改服务器,动物派对登录失败怎么办 Party Animals玩法进入游戏解决方法...
  17. 期货开户的身份识别验证
  18. GAP软件的使用(20150514、20151002、20151004、20151012)
  19. 如何做好独立的B2C商城系统运营,带来转化与成交?
  20. Web漏洞-SSRF漏洞(详细)

热门文章

  1. 洛谷 P3518 [POI2011] SEJ-Strongbox 题解
  2. linux克隆tf卡中的内容,TF/SD内存卡数据克隆怎么做教程
  3. [344]python根据文章标题内容自动生成摘要
  4. hudson安装以及使用
  5. 范美忠的逃生本能需要一种理性伪饰吗?
  6. stm32蓝牙模块通过手机和电脑双向通信
  7. bugku-渗透测试1通关 wp
  8. 推荐电影 经典美剧
  9. 滴滴收购Uber中国 Uber创始人加入滴滴董事会
  10. 基于SSM的智慧物业系统设计与实现