云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构
它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。
这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。
- 处理单元:实现业务逻辑
- 虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。
虚拟中间件又包含四个组件。
- 消息中间件(Messaging Grid):管理用户请求和session,当一个请求进来以后,决定分配给哪一个处理单元。
- 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。
- 处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元
- 部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。
优点
- 高负载,高扩展性
- 动态部署
缺点
- 实现复杂,成本较高
- 主要适合网站类应用,不合适大量数据吞吐的大型数据库应用
- 较难测试
业务上云,在面临海量的业务数据,如何在层出不穷的数据库中选择适合自身业务应用的解决方案,成为架构设计的难点。
传统的集中化存储,如将所有数据存储在Oracle中的方式已经没有办法满足现在多样的数据类型与使用要求。采用“分而治之”的方式,更符合现在云化架构的整体实现思路。
这里为大家分享一下数据库的选型原则,并提供一个真实的案例给大家作为参考。
选型原则:
数据层选型时,要考虑一下六个数据特点,选择合适的数据存储解决方案。
- 数据类型 , 关系型数据、KV数据、视频、图片、文件
- 数据量 , 万级、百万级、千万级、亿级别
- 实时性/一致性 , 实时访问、准实时访问、分钟级延迟、小时级延迟、天级查询
- 并发度 , QPS、TPS、响应时间
- 使用场景 , 实时业务、报表分析、历史归档数据、多维查询、正则查询
- 数据来源 , 文件、数据同步、消息队列、数据库
结合以上六点,选择合适的数据存储技术形成数据层解决方案。
这里举几个选型的例子:
- 海量关系型数据+实时性高+高并发:可以选择分布式关系型数据库,商业的如阿里云DRDS、POLARDB,开源的如MyCAT等。
- 多维度查询+正则查询+准实时+海量数据存储:可选择搜索引擎,如Elasticsearch
- 规则类数据/高并发KV类数据:Redis/Redis Cluster
- 历史归档数据:阿里DRDS/Hbase
- 视频图片文件:可选择分布式文件系统或对象存储,商业的如阿里OSS,开源的HDFS、FastDFS、GlusterFS、CephFS
来源:
http://www.ruanyifeng.com/blog/2016/09/software-architecture.html
http://cloudarchitectures.cn