《分布式架构设计课件》由会员分享,可在线阅读,更多相关《分布式架构设计课件(47页珍藏版)》请在金锄头文库上搜索。
1、,分布式架构,分布式架构,目录,基本概念,1. 性能、并发瓶颈问题,2. 缓存、算法、 性能,3. 监控 (安全、性能),4. 数据库、文件服务系统、消息服务,5. 集群、负载、容错、代理、注册中心,6. 持续集成、部署,基本概念-1,性能、并发瓶颈问题,基本概念-2,缓存、算法、锁 、性能,缓存 客户端缓存、web代理(Squid)边缘缓存(CDN) 平台缓存( EHcache,Cacheonix,Voldemort,JBoss Cache) 应用缓存(memcached、Redis)、数据库缓存 算法 线性结构与顺序表、单向链表、循环链表、栈的基本概念 链式堆栈、中缀表达式、队列、链式队列
2、、串、MyString 矩阵类、递归算法、哈夫曼树、希尔排序、Hash算法等内容等 锁概念 数据库,共享锁、悲观所、乐观锁、排他、读写等、锁的粒度 JAVA,自旋锁、悲观锁、乐观锁、对象锁等 性能 应用划分 系统层次、算法层次、代码层次 调优分层 设计调优、代码调优、内存调优、数据库调优、操作系统调优,基本概念-3,监控 (安全、性能),监控基本分网路监控、系统监控。涉及CPU、内存、磁盘、网络流量、系统进程及Swap状态的多种性能指标 Zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源运维平台,也是目前国内互联网用户中使用最广的监控软件。 Nagios是一款开源
3、的企业级监控系统 Cache)。 阿里云监控是一款免费网站监控产品,可监控站点和服务器,并提供多种告警方式:短信,旺旺,邮件。 百度云观测是百度推出的一款云服务产品,类似于360云监控、阿里云监控,主要是为站长提供免费的一站式网站监测、预警服务,功能覆盖网站运行状况、安全和访问速度等多个方面。,基本概念-4,数据库,GraphDB,基本概念-5,集群、负载、容错、代理、注册中心,基本概念-6,持续集成、部署,1、开发流程阶段:编码 - 构建 - 集成 - 测试 - 交付 - 部署 2、需要具备:自动化测试、版本控制工具(Git,CVS,SVN 等);自动化的构建和软件发布流程(Jenkins)
4、 3、持续集成的优点:快速(减少大量重复工作)、稳定、安全,Docker结合Jenkins的持续构建方案,架构演变,前言,单架构问题 复杂应用的开发维护成本变高,部署效率逐渐降低 团队协作效率差,部分公共功能重复开发,代码重复率居高不下 系统可靠性变差 维护和定制困难 新功能上线周期变长 分布式架构优势 廉价高效 消除单故障点 平衡负载、提高应用的性能 降低耦合度 拆分,分而治之,架构演变-1,初始阶段架构,特征:应用程序、数据库、文件等所有的资源都在一台服务器上,架构演变-2,应用服务和数据服务分离,特征:应用程序、数据库、文件分别部署在独立的资源上,架构演变-3,使用缓存改善性能,特征:数
5、据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力,架构演变-4,使用应用服务器集群,特征:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题,架构演变-5,数据库读写分离,特征:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题,数据读写瓶颈得到缓解,架构演变-6,反向代理和CDN加速,特征:采用CDN和反向代理加快系统的 访问速度,架构演变-7,分布式文件系统和分布式数据库,特征:数据库采用分布式数据库,文件系统采用分布式文件系统,架构演变-8,使用NoSQL和搜索引擎,特征:系统
6、引入NoSQL数据库及搜索引擎,架构演变-9,业务拆分,特征:系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署,架构演变-10,分布式服务,特征:公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用,架构演变-11,结论要点,空间换时间 多级缓存、静态化、索引 并行与分布式计算 任务切分、分而治之 多进程、多线程并行执行 多维度的可用 负载均衡、容灾、备份 读写分离 依赖关系 伸缩 拆分、无状态 资源优化利用 系统容量有限 原子操作与并发控制 基于逻辑的不同,采取不一样的策略 容错隔离、资源释放,SOA服务治理(Dubbo)-1,什么是Dubbo,Dubbo是Aliba
7、ba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。 从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。 Dubbox是Dubbo升级版,现当当技术团结任在维护的版本。 国外比较有影响力的类似服务Spring Cloud。,SOA服务治理(Dubbo)-2,什么是Dubbo,分布式服务框架 远程服务调用 Netty/Mina/Grizzly RMI/Hessian/WebSer
8、vice 服务动态发现 Zookeeper/Redis 集群软负载均衡 Random/RoundRobin 集群失败容错 Failover/Failback,服务治理平台 依赖关系与关键路键 服务路由与动态配置 服务降级与资源劣化 权重调节与容量评估 服务授权与黑白名单 服务SLA与流程管理 服务测试与Mock 服务文档与负责人 ,SOA服务治理(Dubbo)-3,为什么使用Dubbo,优点: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 软负载均衡及容错机制: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软
9、负载均衡,失败容错,地址路由,动态配置等集群支持。可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 提供完善的管理控制台dubbo-admin与简单的控制中心dubbo-monitor 。 Dubbo提供了伸缩性很好的插件模型,很方便进行扩展。 支持多协议 。 使用方法 Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入。 只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。,SOA服务
10、治理(Dubbo)-4,Dubbo服务框架-1,Service Consumer,Dubbo Registry,Service Provider,Dubbo Invoker,Dubbo Exporter,2.启动时订阅服务地址,1.启动时注册服务地址,4.随机调用一个服务地址,失败重试另一地址,3.变更时推送服务地址列表,Dubbo Monitor,5.后台定时采集服务调用次数和调用时间等信息,长连接,短连接,SOA服务治理(Dubbo)-5,Dubbo服务框架-2,SOA服务治理(Dubbo)-6,Dubbo服务框架-3,服务接口层(Service):该层是与实际业务逻辑相关的,根据服务提供
11、方和服务消费方的业务设计对应的接口和实现。 配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。 服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory。 服务注册层(Registry):封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry和RegistryService。可能没有服务注册中心,此时服务提供方直接暴露服
12、务。 集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router和LoadBalance。将多个服务提供方组合为一个服务提供方,实现对服务消费方来透明,只需要与一个服务提供方进行交互。 监控层(Monitor):RPC调用次数和调用时间监控,以Statistics为中心,扩展接口为MonitorFactory、Monitor和MonitorService。 远程调用层(Protocol):封将RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exp
13、orter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。 信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。 网络传输层(Transport):抽象mina和net
14、ty为统一接口,以Message为中心,扩展接口为Channel、Transporter、Client、Server和Codec。 数据序列化层(Serialize):可复用的一些工具,扩展接口为Serialization、 ObjectInput、ObjectOutput和ThreadPool。,SOA服务治理(Dubbo)-6,Dubbo服务框架-4,SOA服务治理(Dubbo)-7,无侵入透明调用,暴露服务: 引用服务:, ,SOA服务治理(Dubbo)-8,常用配置,SOA服务治理(Dubbo)-9,谁在用Dubbo? (外部),2011年底开源,SOA服务治理(Dubbo)-10,谁
15、在用Dubbo? (内部),1000+应用,2000+服务 10,000,000,000+调用/天,SOA服务治理(Dubbo)-11,为什么要服务化?,提升业务建模效率 统一领域模型 规范依赖关系 划分问题边界 提升开发部署效率 降低代码干扰 减少合并冲突 加速项目编译 强契约逻辑复用 方便替换实现 提升线上集群效率 缩小集群规模,小规模增加机器收益最高 分离串行因素,使多数集群并行因子增大 垂直拆分应用,减少瓶颈资源竞争 功能降级,故障隔离,SOA服务治理(Dubbo)-12,服务框架设计原则,项目重构体系-1,项目技术,msql5.7 读写分离,阿里自带 kafka、kestrel 消息
16、 (待定) elasticSearch、Solr 搜索引擎(待定) python3.0 脚本(统计、爬虫) tomcat 7 容器 nginx1.4 反向代理 shiro 权限 jenkins 待定 docker 待定 netty,Jdk 7 版本 Spring 4.2 管理器 mybatis 3.4 持久模板 dubbox-2.8.0 服务治理 zookeeper-3.4.6 代理中心 logback 1.1.7 日志插件 redis3.0 缓存集群 mongoDB 3.2 文件系统集群 hadoop、hbase(大数据分类),项目重构体系-2,项目规划,项目标准 分布式方案 基于Dubbox的SOA服务治理 标准WEB框架(SSM) 采用比较前沿稳定的插件技术 服务拆分 用户中心(账号、用户信息) 消息中心(短信、邮件、微信消息) 支付中心(微信支付、支付宝等三方支付) 代理中心 微信营销中心 任务调度中心 优化功能 组件性能优化、缓存使用 数据库分表分库、读写分离,项目重构体系-3,项目命名规则,标准名称 web层,形如 xlhy-pro