分布式架构服务


1,分布式微服务架构设计原理
2,彻底解决分布式系统一致性的问题
3,服务化系统容量评估和性能保障
4,大数据日志系统的构建
5,基于调用链的服务治理系统的设计与实现
6,java服务的线上应急和技术攻关
7,服务的容器化过程
8,敏捷开发2.0的自动化工具
        

1,分布式微服务架构设计原理

传统单体架构到服务化架构
javaee->ssh->服务化(soa[webservice,esb])->微服务

微服务架构的产生
Web Service 的问题如下
    依赖中心化的服务发现机制。
    使用 SOAP 通信协议,通常使用 XML 格式来序列化通信数据, XML 格式的数据冗余太大,协议太重。
    服务化管理和治理设施并不完善。
ESB 的问题如下
    ESB 虽然是 SOA 实现的 种方式,却更多地体现了系统集成的便利性,通过统务总线将服务组合在起,并提供组合的业务流程服务
    组合在 ESB 上的服务本身可能是 个过重的整体服务,或者是传统的 JEE 服务等。
    ESB 视图通过总线来隐藏系统内部的复杂性,但是系统内部的复杂性仍然存在
    对于总线本身的中心化的管理模型,系统变更影响的范围经常会随之扩大

微服务架构
    微服务把每一个职责单 的功能放在 个独立的服务中
    每个服务运行在一个单独的进程中。
    每个服务有多个实例在运行,每个实例可以运行在容器化平台内,达到平滑伸缩的效果。
    每个服务有自己的数据存储,实际上,每个服务应该有自己独享的数据库、缓存、消息队列等资源。
    每个服务应该有自己的运营平台,以及独 的运 人员,这包括技术运维和业务运营人员:每个服务都高度自治,内部的变化对外透明。
    每个服务都可根据性能需求独立地进行水平伸缩

微服务架构与 SOA 服务化的对比
1.目的不同
    SOA 服务化涉及的范围更广 些,强调不同的异构服务之间的协作和契约 ,并强调有效集成、业务流程编排、历史应用集成等,典型代表为 Web Service ESB
    微服务使用 系列的微小服务来实现整体的业务流程,目的是有效地拆分应用,实现敏捷开发和部署,在每个微小服务的团队里,减少了跨团队的沟通,让专业的人做专业的事,缩小变更和迭代影响的范围,并达到单一微服务更容易水平扩展的目的。

2.部署方式不同
    微服务将完整的应用拆分成多个细小的服务,通常使用敏捷扩容、缩容的 Docker 技术来实现自动化的容器管理 每个微服务运行在单 的进程内,微服务中的部署互相独互不影响。
    SOA 通常将多个业务服务通过组件化模块方式打包在 War 包里,然后统部署在一个应用服务器上。

3.服务植度不同
    微服务倡导将服务拆分成更细的粒度,通过多个服务组合来实现业务流程的处理,拆到职责单 甚至小到不能再进行拆分。
    SOA 粒度没有要求 在实践中服务通常是粗粒度的,强调接口契约的规范化,内部实现可以更粗粒度

根据康威定律,团队的交流机制应该与架构设计机制相对应

微服务架构中职能团队的划分
在业务服务的内部实现需要升级或者变更时,团队内 的各角色成员进行沟通即可,而不需要进行跨团队沟通,这大大提高了沟通效率。只有服务之间的接口需要变更时才需要跨部门沟通

微服务的去中心化治理
微服务倡导去中心化的治理,不推荐每个微服务都使用相同的标准和技术来开发和使用服务

微服务的交互模式
读者窑错模式
读者容错模式( Tolerant Reader )指微服务化中服务提供者和消费者之间如何对接口的改变进行容错
参数可以使用枚举值,返回值的DTO中禁止使用枚举值

消费者驱动契约模式
提供者契约(提供者规定)
消费者提供契约(要求提供者提供需要的数据)
消费者驱动契约(提供者向消费者提供承诺遵守的约束,不可随意改变)

去数据共享模式
不要共享缓存和数据库资源

微服务的分解和组合模式
领域的动词和名词来划分微服务,每个名词和动词都可以是一个微服务

服务代理模式
对读请求切换设计一个开关,打开时请求新系统,关闭时查询老系统

服务聚合模式
查询后聚合返回

服务串联模式
扣减库存(需要同步的场景)

服务分支模式
使用服务组合和服务代理模式时,不要使用服务串联模式和服务分支模式

服务异步消息模式

服务共享数据模式
共享缓存数据(公共不可删除数据)

单元化架构
微服务共享资源(缓存/数据库)

遗留的整体服务
没有完全理解和有把握的情况下(数据库表)可以保持现状

微服务问题措施和方案

船舱隔离模式
微服务容器分组
线程池隔离

熔断模式
限流模式
计数器
令牌桶
信号量
失效转移模式

java平台微服务架构的项目组织形式
微服务项目的依赖关系
微服务项目层级结构(永远不要在本地事务中调用远程服务)
微服务项目的持续发布

服务化管理和治理框架的技术选型

RPC
JDK RMI
Hessian/Burlap
Spring HTTP Invoker

服务化
Dubbo
HSF
Thrift
AXIS
MuleESB

微服务
springboot
Netflix
SpringcloudNetflix


2,分布式一致性问题(重点)
水平拆分(横向线性扩展)
垂直拆分(功能划分)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星月IWJ

曾梦想杖键走天涯,如今加班又挨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值