所谓框架,就是一个适合自己项目的(可用性),具有可靠性,可扩展性和高性能的组织框架。
可靠性:
资源是否可靠?
:宽带稳定,带宽大,服务器电脑配置好。
DNS是否可靠?
:对应多个域名。
例子:www.abc.com----a.abc.com----IP
|----b.abc.com----|
|----c.abc.com----|
DNS分配地点?
:通过关键服务器判断访问IP所属地区、所属运营商,然后对应各省本地服务器、不同服务商服务器。
多服务器?
:使用负载均衡,路由。当DNS切换时候生效慢,可以使用漂IP定位到其它网卡(多个nginx)
性能?
:缓存,全套使用,各级使用。
DB层?
:可靠备份,性能方面,分秒,分部。
:CAP原理:保持consistent(一致性)、partition(可拆分)、available(高性能),但是三者一般不能全有,需要根据情况取舍(如果数据可拆分,则必然有先后)。
传输:
TCP重传,排重?
:心跳方式,还可以在上层加入自己的协议。(server死了,TCP返回可知。断网,TCP返回不一定可知)。
socket代码?
:socket:write(” “)快
:socket:write(” “),socket:write(” “)慢
:如果想更改可以打开TCP:NoDelay
传输一致性?
:RPC(两步提交)传输成功有反馈
:数据流与命令流分开处理
:三部传输,使命令有状态,传输成功,收到再反馈
流水线模式?
:速度很快,一个连一个的传,第一个和最后一个仅差一次传输时间。(传输的快么,了解瓶颈在哪)
Gossip传输?
:病毒传播方式传输
路由:
负载均衡?
:算法RoundRobin、Hash(最好选素数)、Weight、Session-stick。
HTTP反向代理?
:获取源IP
健康检查?
:Redispatch=Retry,例子:A失败-》B、C全失败-》则判断为失败。
缓存:
全面监控?
:系统层check、服务check、业务应用check。
缓存可靠性?
:主动过期(一段时间主动删除缓存)、被动过期。
缓存可扩展?
:使用一致性哈希(哈希环)可以搬运更少的key。
CRU?
:12345 读出4, 23546 放回4到最后再写入6。
缓存衡量标准置换率?命中率?
缓存穿透?
:缓存要有过期时间。
多级缓存?
:增加并发效率。
队列:(Redis、Kafka)
目的?
:异步化。
分类?
:顺序队列,对顺序有要求
:并发队列,对顺序没有要求
高性能、高并发:队列+缓存(cache)?
队列可靠性?
:备份
:HA,集群。
队列扩展性?
:HASH、顺序队列要单独拿出来
KaFka?
:写入文件快,可以追加写,指针读取
秒杀?
:产品业务可以降级
:使用队列,秒杀进入队列
:全异步实现:不管有没有结果返回,可以继续操作。
:半异步:有处理中提示,过后返回结果才可继续操作。
压力测试?
:必须始终有程序在模拟用户操作,一旦出现错误立即回滚上一步操作!
堆积判断?
:判断request时间,如果时间过长,则犹堆积

浙公网安备 33010602011771号