欢迎来到天天文库
浏览记录
ID:43616137
大小:584.08 KB
页数:17页
时间:2019-10-11
《公司新版架构设计ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、初始阶段的小应用应用服务与数据服务分离使用缓存改善应用性能应用服务器集群提升并发处理能力数据库读写分离反向代理和CDN加速分布式文件存储和分布式数据库使用NOSQL和搜索引擎业务拆分分布式服务应用、数据库、文件都在一台机子上使用免费开源的软件为主操作系统无要求(一般是Linux)初始阶段的小应用三台服务器分别存放应用程序、非结构化数据、结构化数据数据库服务器独立部署使之能占用更多CPU、内存、硬盘文件服务器独立部署使之能够占用更多磁盘空间应用服务与数据服务分离缓存分类:本地缓存、远程缓存本地缓存快,受单机缓存
2、容量限制缓存内容少;不利于分布式应用架构远程缓存有网络损耗、容量大、扩展性高使用缓存改善应用性能应用服务器处理请求连接有限、存在瓶颈提升单一服务器性能花费巨大、扩展能力有限、存在瓶颈通过增加更多服务器、提升请求处理能力、可伸缩应用服务器集群是可伸缩集群架构设计中较为简单和成熟的一种利用负载均衡调度服务器,实现按需请求分发负载均衡调度可以是软件级、硬件级、网络级应用服务器集群提升并发处理能力存在不能缓存的情况多,数据库写入也不少的情况下,数据库负载压力成为网站瓶颈利用热备功能,配置主-从关系,实现读写分离,分担
3、单一节点的数据压力利用独立数据库访问模块,实现读写分离调度,对用于透明读写分离调度模块可以是独立硬件,也可以是调度程序主-从复制基于时间调度(简单但不够实时)或事件调度(复杂但相对精准)数据库读写分离中国网络环境复杂,不同地域访问速度存在差异单一网络节点无法“公平”的提供一直的访问质量利用CDN及反向代理机制,缓存静态数据为用户请求分派距离最近的网络服务点减轻服务核心支撑点的访问压力反向代理和CDN加速集中式存储文(文件、数据)无法满足庞大数据量环境分布式数据库是数据库拆分得最后手段,只有单表数据规模非常大的
4、时候才使用应用更常用的数据库分拆手段是业务分库分布式数据库及文件架构,就应用程序而言不透明一般需要与集群式、分布式架构中作出权限后才决定方案分布式文件存储和分布式数据库数据存储和检索需求越来越复杂传统关系型技术无法满足需求(存储、速度)数据交换能力大大提升一般会涉及集群架构对持久化、ACD需要有折冲使用NOSQL和搜索引擎大型应用业务场景复杂,需要分而治之的解决不同业务问题根据业务划分不同产品线及板块,由不同业务团队负责,并最终提供不同服务不同应用独立部署,通过链接,消息队列、接口服务进行交互通讯,最多的是通
5、过共享存储来实现关联性能减弱、可用性提升、维护容易,项目更简单业务拆分存储系统越来越庞大,整体复杂度指数级增长部署维护困难资源链接是服务器规模的平方,出现链接资源不足分布式服务高性能够敏捷项目架构目标高可用可伸缩够安全易扩展项目架构模式敏捷分层分割分布集群缓存异步冗余安全自动单体应用的优点为人所熟知现有的大部分工具、应用服务器、框架和脚本都是这种应用程序IDE友好像NetBeans、Eclipse、IntelliJ这些开发环境都是针对开发、部署、调试这样的单个应用而设计的便于共享单个归档文件包含所有功能,便于
6、在团队之间以及不同的部署阶段之间共享易于测试单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试过程,因为没有额外的依赖,每项测试都可以在部署完成后立刻开始易于部署只需将单个归档文件复制到单个目录下单体应用的缺点不够灵活对应用程序做任何细微的修改都需要将整个应用程序重新构建、重新部署。开发人员需要等到整个应用程序部署完成后才能看到变化。如果多个开发人员共同开发一个应用程序,那么还要等待其他开发人员完成了各自的开发。这降低了团队的灵活性和功能交付频率妨碍持续交付单体应用可能会比较大,构建和部署时间也相
7、应地比较长,不利于频繁部署,阻碍持续交付。在移动应用开发中,这个问题会显得尤为严重受技术栈限制对于这类应用,技术是在开发之前经过慎重评估后选定的,每个团队成员都必须使用相同的开发语言、持久化存储及消息系统,而且要使用类似的工具,无法根据具体的场景做出其它选择技术债务“不坏不修(Notbroken,don’tfix)”,这在软件开发中非常常见,单体应用尤其如此。系统设计或写好的代码难以修改,因为应用程序的其它部分可能会以意料之外的方式使用它。随着时间推移、人员更迭,这必然会增加应用程序的技术债务微服务应用的优点
8、服务简单,只关注一个业务功能传统的整体风格的架构在构建部署和扩展伸缩方面有很大的局限性,其服务端应用就像是一块铁板,笨重且不可拆分,系统中任何程序的改变都需要整个应用重新构建和部署新版本。在进行水平扩展时也只能整个系统扩展,而不能针对某一个功能模块进行扩展每个微服务可由不同团队开发传统的开发模式在分工时往往以技术为单位,比如UI团队、服务端团队和数据库团队,这样的分工可能会导致任何功能上的改变都需要
此文档下载收益归作者所有