- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大用户量下的的系统架构
无限扩展
大用户量下的系统架构
问题
一个高并发的系统
一个稳定的系统
一个高扩展性的架构
一个简洁的方案
我们需要的是
解析
系统架构中的底层元素
稳定性和扩展性
后台数据处理
前台用户请求
实时数据和非实时数据
要做到这一点必须要考虑....
简洁
简洁是最重要的设计依据
将复杂的系统拆分成简洁的模块
减少系统维护的代价
限制使用复杂的功能
简洁的Sql
必须对Sql的使用做限制
绝对不允许出现跨表的查询
DB的设计更大程度上取决于缓存的设计
防止穿透缓存直接到达DB的访问
将业务逻辑放到代码中实现,不要忘了DB的主要作用毕竟是存储
简洁的缓存
必须限制使用缓存的方法
本地缓存/集群缓存
维护缓存的数据
拒绝维护多个缓存之间的同步
简洁的服务
什么才是服务
没有业务逻辑的基础服务
包含业务逻辑的复杂服务
独立折分和部署
数据读写部分只交给服务处理
尽量减少服务之间的相互依赖
Controll负责服务之间的调度
简洁的扩展
因为简洁,所以容易
Mysql的读写分离和分库
分布式的Memcache
多个Service的布署
多个Controller的布署
强大
工欲善其事,必先利其器
尽可能多的做设计
尽可能少的写实现
尽可能多的测试
尽可能多的分析
强大的DAL
DAL应该做到的事情
控制Sql的使用
一个黑盒子
详细的日志记录
强大的Scallop
Scallop又该做什么
零代码,非侵入
和SCA的完美融合
如何控制Service的加入和移除
保留多种负载均衡模式的扩展性
强大的SCA
你做什么都可以告诉SCA
轻代码
非侵入性
RMI/WebService/JMS
简单的服务和复杂的服务
强大的代码生成工具
什么才是工程师必须做的
你来做数据库/Service/复杂业务逻辑
我来做底层代码/Service/配置文件的实现
不把时间花费在重复执行的环节上
核心
系统设计中考虑的核心
拆解模块
模块之间如何交互
计算的部分
存储的部分
交互的部分
变化的部分
将系统拆解成Service
为什么选择Service
复用
高内聚
调试
部署
RMI是系统调用的核心
最常使用的调用方式
高效
很低的学习曲线
JMS是系统解耦的核心
什么时候使用JMS
解决长尾逻辑
更轻松的方式
稳定的消息系统
ETL是计算部分的核心
如何使用ETL
ETL用来做数据转换
ETL不应该直接读写自己的DB
ETL一般情况下只允许部署一台
ETL的日志监控和统计邮件
ETL的部署
缓存架构是系统性能的核心
缓存,还是缓存
缓存是用来解决并发问题的
缓存不是内存数据库
缓存是分级别的
存储系统的扩展性
虽然我们拥有缓存,但是
Mysql依然做好了大数据量的准备
读写分离是需要的
虽然单表的性能支持千万级别的记录,还是需要使用分库的功能
分库对Sql的使用要求更严格
Comet是用户交互的核心
已经相当成熟的技术框架
Erlang对大规模用户量的支持
Comet技术对用户交互的体难
Drools和Groovy是动态计算的核心
总有些非实时的计算
那些变动比较大的业务逻辑
工程师和业务人员的协作
核心回顾
系统设计中考虑的核心
拆解模块 (Service)
模块之间如何交互 (RMI/JMS)
计算的部分(ETL)
存储的部分(Mysql/读写分离/分库)
交互的部分(Comet)
变化的部分(Drools/Groovy)
系统架构图
Service
Service
Service
Service
Service
Service
Cache
Cache
Cache
Cache
Cache
DB
DB
Service
Service
Web
Web
Web
Web
技术架构表
序号
名称
技术
1
DB
Mysql
2
Cache
Ehcache
3
Cache
Memcache
4
服务
Tuscany
5
调度
Scallop
6
框架
Spring
7
Web服务器
Tomcat
8
JMS
QPID
9
Comet
Erlang
10
代码生成
Velocity
11
定时任务
Quartz
12
单元测试
JUnit
13
动态脚本
Groovy
14
规则引擎
Drools
15
项目管理
Maven
文档评论(0)