系统特色数据库
1.提供的服务多缓存
2.依赖的数据源多样化,数据库、HTTP接口、RPC接口等并发
3.系统以读为主,写方面主要是下单流程,活动异步
4.总体服务加起来体量大[访问量+数据量(sku、商品、价格)]tcp
5.须要快速响应,影响用户浏览下单体验高并发
6.服务之间相互影响性要小[服务化]操作系统
基本原则server
使用HTTP/HTTPS提供服务:服务化后对于使用不一样语言实现的不一样系统,HTTP从便捷和使用范围上有绝对的优点blog
使用短链接:接口
在HTTP中开启长链接须要在协议头中加上Connection:keep-alive,固然最终是否使用长链接通讯是须要双方进行协商的,客户端和服务端只要有一方不一样意,则开启失败。长链接由于能够复用链路,因此若是请求频繁,能够减小链接的创建和关闭时间,从而节省资源。
既然长链接这么『好』,短链接这么『很差』为何还要使用短链接呢?咱们知道这个『链接』其实是TCP链接。TCP链接是有一个四元组表示的,如[源ip:源port—目标ip:目标port]。从这个四元组能够看到理论上能够有无数个链接, 可是操做系统可以承受的链接但是有限的,假设咱们设置了长链接,那么无论这个时间有多短,在高并发下server端都会产生大量的TCP链接,操做系统维护每一个链接不但要消耗内存也会消耗CPU,在高并发下维护过多的活跃链接风险可想而知。
并且在长链接的状况下若是有人搞恶意攻击,建立完链接后什么都不作,势必会对Server产生不小的压力。因此在互联网这种高并发系统中,使用短链接是一个明智的选择。对于服务端因短链接产生的大量的TIME_WAIT状态的链接,能够更改系统的一些内核参数来控制,好比net.ipv4.tcp_max_tw_buckets、net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse等参数
一个大的原则,若是依赖的服务不可靠,那系统就可能随时出问题。对于依赖服务的数据,能异构的就要拿过来,有了数据就能够作任何你想作的事,有了数据,依赖服务再怎么变着花的挂对你的影响也是有限的。
异构时能够将数据打散,将数据原子化,这样在向外提供服务时,能够任意组装拼合。
巧用缓存
流量控制
异步、并行
数据托底
防刷
降级
多域名