分布式服务架构方案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式服务架构方案

高并发分布式服务架构方案 下图是一个非常全面的架构蓝图,针对不同的应用系统需要的模块各有不同。此架构方案主要包括以下几个方面的设计:数据存储和读取,基础服务,应用层(APP/业务/Proxy),日志监控等,下面对这些主要的问题提供具体的各项针对性技术方案。 数据的存储和读取 分布式系统应该根据应用对数据不同的一致性、可用性等要求和数据的不同特性,采用不同的数据存储和读取方案,主要有以下几种可选方案: 内存型数据库。内存型的数据库,以高并发高性能为目标,在事务性方面没那么严格,适合进行海量数据的存储和读取。例如开源nosql数据库mongodb、redis等。 关系型数据库。关系型数据库在满足并发性能的同时,也需要满足事务性,可通过读写分离,分库分表来应对高并发大数据量的情况。例如Oracle,Mysql等。 分布式数据库。 对于数据的高并发的访问,传统的关系型数据库提供读写分离的方案,但是带来的确实数据的一致性问题提供的数据切分的方案;对于越来越多的海量数据,传统的数据库采用的是分库分表,实现起来比较复杂,后期要不断的进行迁移维护;对于高可用和伸缩方面,传统数据采用的是主备、主从、多主的方案,但是本身扩展性比较差,增加节点和宕机需要进行数据的迁移。对于以上提出的这些问题,分布式数据库HBase有一套完善的解决方案,适用于高并发海量数据存取的要求。 基础服务 基础服务主要是指数据层之上的数据路由,Cache,搜索等服务。 路由Router。对于数据库切分方案中的分库分表问题,需要解决在请求对应的数据时定位需要访问的位置,可根据一致性Hash,维护路由表至内存数据库等方案解决。 Cache。对于高并发的系统来讲,使用Cache可以减轻对后端系统的压力,所有Cache可承担大部分热数据的读操作。当前用的比较多的是redis和memcache,redis比memcache有丰富的数据操作的API,redis对数据进行了持久化,而memcache没有这个功能,因此memcache更加适合在关系型数据库之上的数据的缓存。 搜索。搜索可以支持应用系统的按照关键词的检索,搜索提示,搜索排序等功能。开源开源的企业级搜索引擎主要有lucene,?sphinx,选择搜??引擎主要考虑以下三个方面: 搜索引擎是否支持分布式的索引和搜索,来应对海量的数据,支持读写分离,提高可用性 索引的实时性 搜索引擎的性能 Solr是基于Lucene开发的高性能的全文搜索服务器,满足以上三个方面的考虑,而且目前在企业中应用非常广泛。 应用层 应用层主要包括面向用户的应用,网站、APP等,还包括相关的业务处理的运算等。 负载均衡-反向代理。一个大型的平台包括很多个业务域,不同的业务域有不同的集群,可以用DNS做域名解析的分发或轮询,DNS方式实现简单。但是因存在cache而缺乏灵活性;一般基于商用的硬件F5、NetScaler或者开源的软负载lvs在做分发,当然会采用做冗余(比如lvs+keepalived)的考虑,采取主备方式。Nginx是基于事件驱动的、异步非阻塞的架构、支持多进程的高并发的负载均衡器/反向代理软件,可用作反向代理的工具。 应用服务器部署。应用层运行在jboss或者tomcat容器中,代表独立的系统,如网站系统,基础服务Solr等。可以采用servlet3.0,异步化servlet,提高整个系统的吞吐量。http请求经过Nginx,通过负载均衡算法分到到App的某一节点,当并发量变大时,可以很方便地通过增加应用服务器进行扩展。有些反向代理或者负载均衡不支持对session?sticky支持不是很好或者对接入的可用性要求比较高(app接入节点宕机,session随之丢失),这就需要考虑session的集中式存储,使得App接入层无状态化,同时系统用户变多的时候,就可以通过增加更多的应用节点来达到水平扩展的目的。 业务服务。业务层对外协议以NIO的RPC方式暴露,可以采用比较成熟的NIO通讯框架,如netty、mina。为了提高模块服务的可用性,一个模块部署在多个节点做冗余,并自动进行负载转发和失效转移。对于分布式系统的一致性,尽量满足可用性,一致性可以通过校对来达到最终一致的状态。 HA(高可用性)。传统实现HA的做法一般是采用虚拟IP漂移,结合Heartbeat、keepalived等实现HA。在分布式的集群中,可以用zookeeper做分布式的协调,实现集群的列表维护和失效通知,客户端可以选择hash算法或者roudrobin实现负载均衡;对于master-master模式、master-slave模式,可以通过zookeeper分布式锁的机制来支持。 日志监控等其他组件 日志系统。应用系统在运行时会产生大量的日志,这些日志需要收集到分布式存储

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档