1.分布式及中间件
分布式特点:
高吞吐,强扩展,高并发,低延迟,灵活部署
分布式中间件:
处于操作系统软件与用户的应用软件中间。
分布式例如基于Redis的分布式缓存,基于RabbitMQ分布式消息中间件,基于Elasticsearch的分布式全文搜索引擎,基于ZooKeeper的分布式锁等。
分布式发展历程
1.单点集中式Web应用
2.应用与文件服务及数据库单独拆分
3.引入缓存与集群,改善系统整体性能
**引入缓存:**把大量用户的读请求引导至缓存,而写操作仍然直接写到数据库DB中。
**引入集群:**目的在于减少单台服务器的压力,常见手段是Nginx+Lvs,使多台应用服务器构成负载均衡,减少单机的负载压力。
4.数据库读写分离,并提供反向代理以及CDN加速访问服务
例子1:你需要一百万,然后张三认识一个人能借给你,借他的手你借到钱。你用完之后要还钱也是还给张三,然后再让张三还给有钱人,因为张三是你们中间的代理。整个过程中张三是对于“你”的一个正向代理。
例子2:你还是需要一百万,你不认识别人,于是在网上找了一个网贷公司去借钱,你换钱的时候也要连本带利的还网贷公司。这个过程中网贷公司这个平台就是代理,网贷公司可能是找李四借的一百万然后赚差价,但都与你无关,因为你只要钱就可以了。所以这种不需要知道对方的类似情况叫做反向代理。反向代理隐藏了真实的服务端(双方不需要知道对方的情况)
两者区别在于,正向代理的对象是客户端,反向代理的对象是服务端。
分布式系统发展历程–数据库读写分离并提供反向代理CDN加速访问服务
5.分布式文件系统与分布式数据库
数据库常见因素
1.网络不可靠
2.节点故障无法避免
Redis:开源(BSD许可)的,基于内存存储,采用Key-Value(键值对)格式存储的内存数据库,支持字符串,哈希表,列表,集合,有序集合,位图等。
Redission:架设在Redis基础上的一个Java柱内存数据网络,为使用者提供一系列具有分布式特性的常用工具类。
RabbitMQ:用于实现消息异步分发,模块解耦,接口限流等功能。
ZooKeeper:开源的分布式应用程序协调服务,可以为分布式提供一致性服务,简称ZK。提供的服务包括配置维护,域名服务,分布式同步等,提供的接口则包括分布式独享锁,选举,队列等。