大型网站系统与java中间件实践--笔记
曾宪杰---大型网站系统与java中间件实践,笔记
2应用分布式
1,负载均衡
2,解决集群后的session问题。禁用cookie。
3,拆分应用:服务化SOA,使用消息中间件。
数据读写分布式
1,主从读写库
2,搜索引擎是个读库。
3,加速数据读取--缓存。
4,数据过大:业务垂直拆分,单表水平拆分。拆分后的路由问题,分页查询。
4,服务框架的设计与实现。
集中式-->分布式
服务的调用时的路由选择(众多服务ip中选哪个。方法提供版本号)。
服务化后的jar爆炸,及jar版本冲突。自定义classLoader,把服务框架自身用的类,和应用用的类控制在user-DefinedClassLoader级别。实现隔离。tomcat,OSGI的bundle。
osgi应用及实践。
服务框架需要优先启动。
5,数据访问层
分布式后的事务方案:
1,分布式事务XA,两段提交,太重。
2,最终一致原则。
一致性理论:CAP
consistency 数据一致性,所有节点在同一时间读到的数据一样。
Availability 数据可用性,无论成功或失败,每个请求都能收到反馈。
Partition-Tolerance 分区容忍性,部分出问题,系统仍能继续工作。
分布式中,不能同时满足CAP,
CA:单机数据库的选择。
AP:NoSQL
分布式中一般会选择AP,然后尽量满足C-最终一致。
访问层方案:
1,代理/装饰JDBC,类似DBCP连接池的方式。设计模式体会?
2,封装ORM层
一致性hash?????????
6,消息中间件
解耦:登陆后立刻返回。短信,安全等交给中间件处理。
发送消息的一致性?
JMS Queue模型,公用一个队列,一个消息只会被收到一次。
JMS Topic模型,一个消息被收到N次。
消息订阅者方式。
消息可靠性:消息存储。
核心问题:
数据计算,
数据存储(读写),倒排索引。