新闻资讯

NEWS CENTER
栏目导航

微服务模块拆分《二

发布时间:Mar 05, 2019         已有 人浏览

  将完整的使用本地调用方式的垂直应用拆分成多个微小的服务,每个服务模块负责提供各自独立的服务接口 ,并通过网络调用的方式将各个服务模块组织起来形成完整的微服务系统。

  系统复杂度:业务的复杂度决定了被拆分的模块之间必然存在一定的依赖,模块被拆分的越细,就意味着会产生更多的依赖关系,在拆分解耦的同时必然增加了整个系统的复杂度。随着业务的丰富不可避免的使系统越来越复杂,所以规范,约定,框架等手段尽量做到结构及代码的清晰与整洁。

  团队协作:当垂直应用变得庞大且复杂需要更多的工程师维护时,一般会使用maven的多模块依赖特性将单一的应用拆分成多个模块,每个模块分给不同的工程师维护,最终团队成员提交模块,根据依赖关系打包一个应用发布。

  代码维护难度:微服务能够解决在垂直应用中错综复杂的业务逻辑耦合在一起的维护困难问题,但并不是将模块拆分的越细越好,过多的模块反而会增加工作量与代码维护难度。每个模块都处理着属于自己的业务逻辑,他们提供服务并维护者与其他模块的依赖关系,如果服务提供方的返回结果发生变化,则各个调用方均要修改自己的代码。

  硬件资源分配:系统存在请求压力不均衡的情况,模块拆分的越细,则能更有针对性的为高压力模块分配更多的计算资源,避免浪费。

  单模块:为了设计出低耦合,高内聚的系统,需要确保每个模块都具有一定的独立性,每个模块只完成它所负责的业务功能,并且模块之间做到最少联系及接口简单。单个模块内聚了相关性较强的功能,并且拥有独立 的数据库,单元测试,运行内存,业务逻辑处理等。

  大部分请求都是同步的,消费方发起请求后等待提供方完成计算并返回结果,但如果等待的过程过长,则需要借助消息队列与回调将请求的过程变成异步,消费方向服务提供方的消息队列中发送请求消息,服务方计算完成后调用消费方的方法通知结果。

  复杂模块:为实现服务业务将基础模块进行聚合重组时,每个模块对自身数据库操作事务的管理比较简单,但基于网络跨模块的二阶事务管理则会将整个过程变得无比复杂,并且消费更多的资源,所以在进行模块拆分时尽量避免二阶事务的产生,无法避免时,可以采用TCC(trying confirming canceling) 补偿性事务解决方案实现。

  垂直应用在处理购物车或登陆状态管理等功能时一般会基于session 实现,但在分布式架构下session的共享与传递会增加整个系统的耦合度并且提高复杂性。模块在处理自身业务逻辑及服务调用时,尽量以无状态协议的角度进行社会及,请求玩立刻释放资源。维护状态的工作可由服务提供方增加状态检查的服务,但面对高查询,低修改的场景时可以基于约定交由公共缓存(redis)系统处理

  微服务架构中模块划分和服务识别最近在进行微服务架构的交流和讨论中,除了谈到微服务技术架构外,客户往往更加挂你微服务模块的划分粒度,已经具体的微服务API接口的识别和定义问题,因此这篇文章将重点谈下微服...博文来自:cwscwj的专栏

  你的微服务是否太小?或者太紧密耦合?本设计指南可以提供帮助。设计微服务往往更像是一门艺术而不是科学。本文提出五个建议:1.它不会与其他服务共享数据库...博文来自:乔志勇笔记

  1、微服务一个“服务”,可以对应多个服务实例。把每个服务实例都视作一个黑盒,这个盒子有着明确的输入点和输出点,并且(理想情况下)仅通过这些输入和输出点和外界产生关联。每个服务实例会拥有专属的网络地址、...博文来自:zhaizhai的博客

  近年来微服务/SOA很是流行,我们团队赶时髦,也玩了玩。虽然用的时间还不长,但也已经踩过不少坑。今天想记录下自己对边界问题的一些思考。很多人在谈起微服务时,总是会很自豪的说,微服务为我们提供了高内聚低...博文来自:java的平凡之路

  微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。本文将介绍微服务架构的演进、优缺点和微服务应用的设计...博文来自:lostfairy00的博客

  工作中使用了微服务,接下来的一段时间里,我会写一系列的文章来介绍微服务架构,同时我也会在github上写一个microservices的应用框架(地址会在后续文章给出)。上一篇文章详细说明了单一应用架...博文来自:沈鸿斌的博客

  在AndroidSDK一文中,我们谈到模块化和组件化,现在我们来聊聊组件化开发。模块化和组件化模块化组件化不是个新概念,其在各行各业都一直备受重视.至于组件化什么时候在软件工程领域提出已经无从考究了,...博文来自:沉璧浮光

  背景微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上。单体...博文来自:乔志勇笔记

  程序员最牛逼的能力是模块拆分能力,    然后才能利用模块依赖的工具,java9或者runtime期的osgi,其他maven插件,mavenbuild期.其他idea插件,类似阿里云的代码规范检查....博文来自:fei33423的专栏

  模块拆分是Maven经常使用的功能,简单梳理一下如何使用Maven进行多模块拆分,只做归纳总结,网上资料很多,不再一步一步实际创建和部署。1.建立Maven多模块项目一个简单的JavaWeb项目,Ma...博文来自:weixin_34112208的博客

  在我们从零开始做一个新系统的时候,会首先进行系统功能模块架构设计,那么是直接做一个大而全的垂直的MVC系统,使用一个war包进行发布管理,还是需要按一些规则进行模块拆分,设计成SOA或者微服务系统比较...博文来自:大龙的博客

  1iOS资源拆分与模块化对于iOS,很多App已经注意到图片会散落在各个地方,于是会把图片、配置文件、xib按照模块进行归类,放到各自的bundle包中。做得最好的,是一家电商App,会在App包...博文来自:包建强的无线技术博客

  由于近期公司的电商平台业务流量逐步递增,原来的整站架构已经无法满足现有的需求,所以需要拆分业务,将会员模块独立为会员中心子系统,核心业务系统拆分为订单服务,支付服务,商品服务,门店管理服务,促销活动5...博文来自:kao123yaojinqian的专栏

  微服务拆分原则和方法:       单一职责、高内聚低耦合;       服务粒度适中;       考虑团队结构:(康威定律:设计系统的组织其产生系统的设计和架构等价于组织间的沟通结构。就是指每个团...博文来自:laomumu1992的博客

  从正视MSA开始 • 业务架构之服务拆分 • 技术架构之迭代重构 • 使用PDCA环持续演化

  拆分原则:      单一职责、服务粒度适中、考虑团队结构、以业务模型切入、演进式拆分、避免环形依赖和双向依赖拆分步骤:      分析业务模型、确定服务边界、模块拆分、数据库拆分......

  架构规划,架构师总结篇11-101. 微服务架构是一堆小服务的集合。 2. 每一个服务可以作为独立的进程来运行。 3. 微服务是围绕公司的业务逻辑来建模 4. 整个服务它可以独立部署 5. 去中心化管理下载

  数据库中有 100 多万个用户,若...:你这个就是面试题的一个汇总呀?标题如果换成Java中高级面试题汇总 浏览量会高很多吧

  spring cloud【进阶三】:首先标题定位错误,文章内容当属【教程】而非【进阶】;其次文章内容杂乱无章法,毫无排版可言

Copyright © 2002-2019 幸运蛋蛋开奖结果 版权所有