【分布式专题】-- 分布式架构设计

一、分布式主流架构模型–SOA架构/微服务架构

1.SOA架构(服务治理):

Service Oriented Architecture (面向服务的架构),是一种设计方法,服务之间通过相互依赖最终提供一系列的功能,一个服务通常以独立的形式村杂鱼操作系统进程中。各个服务之间通过网络调用。通常服务之间互相调用关系复杂, ESB(企业服务总线)来治理
SOA所解决的核心问题:
1、系统集成 (有序)
2、系统的服务化 (复用)
3、业务的服务化 (高效)

2.微服务架构

与soa类似,但是在soa上做的升华,强调重点在于“业务需要彻底的组件化和服务化”,原有的单个系统业务会拆分成为多个可以独立开发,设计,运行的小应用。这些小应用之间通过服务完成交互和集成。
组件表示一个可以独立更换和升级的单元,就行pc中的CPU,内存,显卡,硬盘各自可以独立升级不影响其他单元。
微服务的特征:
1、通过服务实现组件化
2、按业务能力来划分服务和开发团队
3、去中心化
4、基础设施自动化(devops,自动化部署)

3.二者区别

微服务不再强调SOA架构中比较重的ESB企业服务总线,同时SOA的思想进入到歌单业务系统内容实现真正的组件化。
Docker容器技术为微服务提供便利,部署单元更小。
微服务关注完全分离,SOA关注系统集成。

二、分布式架构的基本理论(CAP,BASE以及应用)

1.CAP(一致性,可用性,分区容错):
只能保证两个,2/3;
cp/ap 保证最终一致性。

2.BASE:
放低一致性标准,保持最终一致性
保持基本可用 (搜索响应时间变长,降级页面(当前访问量过多时))
软状态:状态机 ,通过软状态满足最终一致性
数据最终一致性: 基于MQ

三、分布式架构下的高可用设计

1、 避免单点故障
负载均衡技术(failover容错/ 选址/ 硬件负载f5/软件负载/去中心化的软件负载–gossip(redis-cluster))
热备 (linux 的HA机制–双机热备,两个服务器共享一个磁盘)
多机房 (同城灾备、异地灾备)
2、应用的高可用性
故障监控(系统监控(cpu,内存)、链路监控、日志监控)自动预警、自动化运维
应用的容错设计(服务降级、限流) 自我保护能力
数据量(数据分片、读写分离)

四、分布式架构下的可伸缩设计

垂直伸缩,提升硬件能力
水平伸缩,增加服务器


构建分布式架构最重要因素

  1. cdn加速静态资源访问
  2. 分布式存储
  3. 分布式搜索引擎
  4. 应用发布与监控
  5. 引用容灾及机房规划
  6. 系统动态扩容
    先来详细的说说CDN。
    CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
    eg:
    现象:www.gupao.edu.com的ip在北京,最南边一个人访问这个ip时候需要通过DNS解析会经过多级跳跃访才能访问到主机。
    问题:存在延迟
    解决:引入cdn静态内容分发网络

步骤:

  1. 最近的DNS节点上没有域名信息时,跳转到CNAME上域名上,
  2. 此域名再向全局负载均衡器发起请求
  3. 全局负载均衡器会根据用户的ip地址,用户请求内容,用户所属区域的负载均衡设备,告诉用户去向哪台设备发起请求
  4. 通过CDN DNS会解析出一个全局的负载均衡地址
  5. 用户去访问CDN的全局负载均衡地址
  6. CDN全局负载均衡设备会根据用户ip和请求地址选择距离用户最近区域的负载设备返回给用户
  7. 用户由此可以访问到CDN的缓存服务器

CDN上可以放什么资源?
项目中的静态资源, js,html,css,img

好处?
CDN加速,(访问距离用户最近的服务器地址,提高访问速度)
减轻本机服务器的压力,将压力分摊到cdn缓存服务器

你可能感兴趣的:(【Java学习】,分布式)