认知分布式

一 服务架构发展历史

单体式架构–>垂直架构–>分布式架构–>智能架构
单体式架构:应用程序、静态文件、数据库等全部在一台机器上
在这里插入图片描述
垂直架构:基于业务对应用程序、静态文件、数据库等进行垂直拆分,业务之间相互独立
在这里插入图片描述
分布式架构:在垂直架构基础上抽象出公共服务层
在这里插入图片描述
智能架构:在分布式架构基础上自动自动对服务进行编排与权重调整

二 RPC远程调用

分布式架构系统的核心是RPC远程调用技术
在这里插入图片描述
常见的RPC远程调用技术有RMI、Web Service、Http

协议描述优点缺点
RMIJAVA 远程方法调用、使用原生二进制方式进行序列化简单易用、SDK支持,提高开发效率不支持跨语言
Web Service比较早系统调用解决方案 ,跨语言, 其基于WSDL 生成 SOAP 进行消息的传递SDK支持、跨语言实现较重,发布繁琐
Http采用htpp +json 实现简单、轻量、跨语言不支持SDK

其实比较快速简单的轻量级架构就是Http+Nginx,事实上一些中小公司的一般项目是这么做的。它可以实现:

  • 负载均衡:这么多个机器调用哪一台?
  • 容错:如果调用其中一台调用出错了怎么办?
  • 服务配置:服务端地址配置在哪里?
  • 健康检测:服务关宕机或恢复后怎么办?

但是这种方式是有瓶颈的:Nginx中心负载、Http传输、JSON序列化、开发效率、运维效率。

基于瓶颈考虑大型系统需要一个更加专业的方案,该方案必须做到以下几点:
1.去中心化,客户端直连服务端
2.动态注册和发现服务
3.软负载均衡实现
4.高效稳定的网络传输
5.高效可容错的序列化

其对应的功能组件如下:
在这里插入图片描述
1.注册中心逻辑:

  • 服务端动态注册服务提供者信息
  • 客户端从注册中心接收服务提供者信息,并存储至本地缓存
  • 注册中心实时监听提供者状态,如果变更将即时通知客户端

2.调用逻辑:

  • 负载均衡
  • 容错
  • 对服务调用者透明

3.传输模块:

  • minal,servlet 容器、netty

4.序列化模块:

  • kryo、hessian、java、protobuf、JSON、XML

三 主流的分布式框架

Spring Cloud Zuul
在这里插入图片描述
Dubbo
在这里插入图片描述

四 分布式架构的成本与风险

分布式的强大是用成本和风险换来的
分布式事物:
分布式事物是指一个操作,分成几个小操作在多个服务器上执行,要么多成功,要么多失败这些分布事物要做的
不允许服务有状态(stateless service)
无状态服务是指对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
服务依懒关系复杂
服务 A --> B–> C 那和服务C 的修改 就可能会影响 B 和C,事实上当服务越来 越多的时候,C的变动将会越来越困难。
部署运维成本增加
相比之前几个节点,运维成本的增加必须的。
源码管理成本增加:
原本一套或几套源码现在拆分成几十个源码库,其中分支、tag都要进行相应管理。
保证系统的伸缩性:
伸缩性是指,当前服务器硬件升级后或新增服务器处理能力就能相对应的提升。
分布式会话:
此仅针对应用层服务,不能将Session 存储在一个服务器上。
分布式JOB
通常定时任务只需要在一台机器上触发执行,分布式的情况下在哪台执行呢?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值