小机灵鬼|干货速来!透彻剖析微服务架构设计模式,深入开发Java有奇效( 二 )
单体地狱的银弹-微服务架构软件架构其实对功能性需求影响并不大 。 事实上 , 在任何架构甚至是一团糟的架构之上 , 你都可以实现一组用例(应用的功能性需求)架构的重要性在于它影响了应用的非功能性需求 , 也称为质量属性或者其他的能力。 随着 FTGO 应用的增长 , 各种质量属性和问题都浮出水面 , 最显著的就是影响软件交付速度的可维护性、可扩展性和可测试性 。训练有素的团队可以减缓项目陷入单体地狱的速度 。 团队成员可以努力维护他们的模块化应用 。 他们也可以编写全面的自动化测试 。 但是另一方面 , 他们无法避免大型团队在单体应用程序上协同工作的问题 , 也不能解决日益过时的技术栈问题 。 团队所能做的就是延缓项目陷入单体地狱的速度 , 但这是不可避免的 。 为了逃避单体地狱 , 他们必须迁移到新架构:微服务架构 。
今天 , 针对大型复杂应用的开发 , 越来越多的共识趋向于考虑使用微服务架构 。 但微服务到底是什么?不幸的是 , 微服务这个叫法本身暗示和强调了尺寸。 针对微服务架构有多种定义 。 有些仅仅是在字面意义上做了定义:服务应该是微小的不超过 100 行代码 , 等等 。 另外有些定义要求服务的开发周期必须被限制在两周之内 。 曾在 Netflix 工作的著名架构师Adrian Cockcroft 把微服务架构定义为面向服务的架构 , 它们由松耦合和具有边界上下文的元素组成 。 这个定义不错 , 但仍旧有些复杂难懂 。 立方体模型会是更好的定义 。
扩展立方体和服务
- X 轴扩展:在多个实例之间实现请求的负载均衡
- Z 轴扩展:根据请求的属性路由请求Z 轴扩展也需要运行单体应用程序的多个实例 , 但不同于 X 轴扩展 , 每个实例仅负责数据的一个子集 。 图 1-5 展示了 Z 轴扩展的工作原理 。 置于前端的路由器使用请求中的特定属性将请求路由到适当的实例 。 例如 , 应用程序可能会使用请求中包含的 userId 来路由请求 。 在这个例子中 , 每个应用程序实例负责一部分用户 。 该路由器使用请求 Authorization头部指定的 userId 来从 N 个相同的应用程序实例中选择一个 。 对于应用程序需要处理增加的事务和数据量时 , Z 轴扩展是一种很好的扩展方式
- Y轴扩展:根据功能把应用拆分为服务X 轴和 Z 轴扩展有效地提升了应用的吞吐量和可用性 , 然而这两种方式都没有解决日益增长的开发问题和应用复杂性 。 为了解决这些问题 , 我们需要采用 Y 轴扩展 , 也就是功能性分解 。 Y 轴扩展把一个单体应用分成了一组服务
微服务架构的好处和弊端优点大型的复杂应用程序可以持续交付和持续部署
- 拥有持续交付和持续部署所需要的可测试性 。 自动化测试是持续交付和持续部署的一个重要环节 。 因为每一个服务都相对较小 , 编写和执行自动化测试变得很容易 。 因此 , 应用程序的 bug 也就更少 。
- |让你长高5cm的穿搭干货,一周逆袭时尚icon
- 聚米小美老师聚米微商|绝对成交实操细节方法,现学可现用的干货
- 美尼美快装定制|衣柜布局难点讲透彻才好,如何做衣柜选择?
- 聚尚美女性教育机构|聚尚美干货分享:色彩在服装搭配中的重要性
- 装修流大师兄|干货 | 五种卫生间风格,不花钱也能学到!
- 设计house效果图|各定制家具,如何挑选适合板材,干货分享涨知识了!
- 主播晋级|【主播干货】主播如何提升自己?不仅是变美那么简单!
- 盈拓国际展览|这些注意点不得不看!,外贸干货丨拿下客户
- 天猫入驻 天猫入驻:天猫商城入驻规则费用是多少?知舟集团送上满满干货
- 设计师文森|纯干货!新人必看的配色方法