互联网项目目标:用户多,流量大并发高,海量数据,易受攻击,功能管理,变更快.
高性能,响应时间,
并发数,系统同时能处理的请求数量.
请求数:单位时间请求数
连接数:请求数大于等请求数
用户数:
吞吐量,单位时间内系统能处理的请求数量.
QPS:每秒查询数
TPS:每秒事务数,一个页面的一次访问,只会形成一次TPS
tps>连接数>qps
高可用:
可伸缩:
高可扩展:
安全性:
敏捷性:
集群:很多人干一样的事情
分布式:很多人干不一样的事
架构演进:单体架构,单体集群架构,垂直架构,
SOA架构(面向服务架构),微服务架构(soa一样的思想,然后升华).
dubbo:
功能作用:rpc远程服务调用,soa服务治理方案.
dubbo序列化:两个服务之间的调用,实体需要实现序列化.
dubbo地址缓存:注册中心挂了,会从本地缓存调用,当注册中心地址变化,
会存在notefy通知.
dubbo超时和重试机制:dubbo service注解之后添加timeout,retries.
dubbo多版本:灰度发布,dubbo service注解之后添加version,控制走哪个版本
dubbo负载均衡:reference注解之后添加loadbance:
randow:按权重随机概率(默认)
roundrobin:按权重轮询
leastactive:最少活跃调用度
consistenhash:一致性hash(通常根据id来算)
集群容错:reference注解之后添加cluster
失败重试:fallover,通常用于读的操作.
快速失败:failfast,通常用于写操作
失败安全:failsafe,出现异常直接忽略,返回空,用于写日志
失败自动恢复:failback,必须要成功,如果失败,一会还会再重试
并行调用多个服务:forking,只要有一个成功就返回,耗费性能
广播调用所有提供者:boardcast,任意一台报错则报错,要么全部成功要么全部失败
dubbo服务降级:reference注解之后添加mork,失败会返回null
zookeeper:
功能作用:配置中心,集群管理,分布式锁(队列管理)
操作命令:持久化节点,持久化顺序节点,临时节点,临时顺序化节点
客户端api:curator封装了操作zookeeper命令的api.
zookeeper选举:首次选举按照Serverid越大的选择,宕机之后按照逻辑时钟
来选择,注意的是都必须保证投票结果过半才能启动集群.
Serverid:数值越大,权重越大.
Zxid(数据ID):数值越大,权重越大.
逻辑时钟(数值比较):投选次数(记录每轮投选的次数,叠加).
zookeeper分布式锁原理:创建临时顺序节点.
临时是防止服务宕机之后,节点没有释放.
顺序是保证获取的节点选择最小节点来比较是否获取到锁,同时除了首节点,
每个节点都会监听比他小一个数值的节点,来知道锁是否已释放.
集群角色:
leader:(参与事务请求),
follower:(查询请求,事务请求转发给leader),并参与选举投票
observer:(查询请求,事务请求转发给leader,分担follower压力),不参与选举投票
在要变成观察者的机器的zk的配置文件
加:peerType=observer 引入观察者,从性能角度来看,是好东西。
但是如果从集群高可用的角度来看,要 慎用。
(5台机器,2个观察者,1个follow挂掉,此时不满足过半统一机制,
选不出leader,集群无法启动)