@Toby-wei
2016-08-11T06:10:45.000000Z
字数 875
阅读 2019
消息队列
分布式
- 系统解耦
- 可靠投递
- 流量控制
- 广播
- 最终一致性
- 耗时操作
- ActiveMQ [Apache维护]
- RabbitMQ [Erlang编写]
- RocketMQ [阿里维护]
- Jafka/Kafka[apache]
分布式消息系统,由LinkedIn于2010年开源。scala语言编写。低延迟的发送和收集大量的事件和日志数据。- mq[alibaba]
插入一点数据库知识点
- 垂直拆分
把关联性不强的表拆分到不同的dbserver- 水平拆分
适用于单表数据量很大的时候.根据字段来拆分.如根据userid再哈希分表.把不同字段分到不同的库中.常用字段和不常用字段分开存储.
- 使用分布式事务[细节]
由数据库管理事务,这样性能代价高!- 由应用程序和数据库共同控制
将一个跨多个数据库的分布式事务分拆成多个仅处于单个数据库上面的小事务,并通过应用程序来总控各个小事务。性能有优势.需要应用程序在事务控制上做灵活设计。如果使用了spring的事务管理,改动起来会面临一定的困难。
- 解决这一问题的普遍做法是分两次查询实现。在第一次查询的结果集中找出关联数据的id,根据这些id发起第二次请求得到关联数据。
- 这些是一类问题,因为它们都需要基于全部数据集合进行计算。多数的代理都不会自动处理合并工作。解决方案:与解决跨节点join问题的类似,分别在各个节点上得到结果后在应用程序端进行合并。和join不同的是每个结点的查询可以并行执行,因此很多时候它的速度要比单一大表快很多。但如果结果集很大,对应用程序内存的消耗是一个问题。
- 前端优化
减少http请求/用了脚本合并js/css代码
使用浏览器缓存
启用Gzip压缩- CDN加速
- 反向代理
主要有两个作用
1.安全.2.反向代理服务器缓存
正向代理主要是为了浏览器的安全.反向代理是为了服务器安全- 服务端缓存
缓存的本质是内存哈希表