系统拆分原则
2015-08-08 21:15
302 查看
细数到今天,拆分系统已经断断续续进行了一个月了,希望在这里整理一下,对接下来的拆分工作有益。
这里记录一下在实际工作中总结的几条原则吧,主要是达到各系统间低耦合,系统内部高内聚。
先写这些吧,以后发现再补充。
这里记录一下在实际工作中总结的几条原则吧,主要是达到各系统间低耦合,系统内部高内聚。
db不能跨系统访问。自己的db自己管理,简单好维护,降低各系统间的数据耦合度。需要做成这样很多以前的联合查询都得改造。
各子系统要封装得足够好。所有子系统通过自己的api项目向其它子系统提供数据服务,这些api项目打包成jar包供其它子系统使用,以降低业务耦合性。
子系统不缓存其它子系统的数据。因为只要缓存其它子系统的数据就可能会造成数据不一致,但是这样严格做起来有一定的难度(系统间调用耗时)。所以有的时候为了性能考虑会缓存少量关键数据。比如说一个用户小李注册后,他的基本信息存在用户系统。他又申请成为了特约投稿人,那他特约投稿人的信息就存在投稿系统。如果业务系统有很多对用户不同身份而进行不同的操作,就可以把小李是特约投稿人的身份存在用户系统里,而不用每次都到投稿系统查询。
缓存距离用户越近越好。顾名思义就是将变动比较少的数据缓存放到http服务器上,这样可以达到最快的响应。变动比较大的数据在前端用js来请求并渲染,充分利用浏览器的性能来提高用户体验,分担服务器的压力。
如果数据必须不能丢失,拉比推更安全。首先拉有序列,只要有序列就可以通过记录最后一条回执来保证之前的都已获取,而不用像推送那样来记录每一条记录的回执;其次,推送需要有回执才能证明对方已经接收到,如果拉的话由自己来记录自己拿到第几条,不需要有回执这一步了。
先写这些吧,以后发现再补充。
相关文章推荐
- JavaScript学习笔记——BOM_window对象
- 01 开篇
- [BZOJ3224]Tyvj 1728 普通平衡树
- linux apt-get 之LAMP架设
- FragmentTabHost+viewPager实现底部导航栏
- Sum Root to Leaf Numbers
- 两种比较“强壮”的单例代码。
- [M]带属性块参照的转换
- 博客园文章编辑器【客户端应用程序】V2.0.0发布,命名为51cnblogs
- 扫描线 - UVALive - 6864 Strange Antennas
- Linux中命令行和图形界面之间切换
- [转]数据中心网络虚拟化 隧道技术
- 【数论+dp】codeforces559C Gerald and Giant Chess
- 兼容的可视区高度和宽度
- iOS 调试用Log()与随机颜色设置
- 为什么和其他语言相比C语言是快速的语言
- Wayland与Weston简介
- windows内存管理的几种方式的优缺点
- STM32学习笔记 ——流水灯
- 数组