前面的故事:小白有一天启动某个程序的时候,提示了一个事情:程序无法启动,端口号被占用。这就要看看,这是哪个程序进程占用的。看看是否有必要给kill掉。第一种常用方法:往常,小白都是直接使用绿色小工具解决的,CurrPorts(cports.exe 本文使用版本号:v2.
然后再用本地的 appliedIndex 和 confirmedIndex 进行对比,如果本地已应用的 index 小于 confirmedIndex 则进行等待,直到追上 confirmedIndex 才会调用 nr.notify 发送通知信号解除 linearizableReadNotify 的等待进行后续的串行读操作。
由于资源有限,就开了2台虚拟机来模拟一下,当然可以用docker实现,这里就不演示了,consul服务也不开集群模式了,同时 consul服务与web服务就放在同一个服务器上了,看懂意思就可以了,多个web服务,就以不同的端口来区分。
这里采用的是令牌桶算法,参数redis-rate-limiter.replenishRate表示允许用户每秒的最大请求数,即令牌桶每秒的填充数率,如设置是10,表示每秒令牌桶最大只能装满10次请求,但是多余的请求不会丢失,而是等待令牌桶中有空闲的空间后再继续执行,redis-rate-limiter.burstCapacity也是表示 1s 内 允 许 的 最 大 请 求 数 量 , 但 与 replenishRate 的 区 别 是burstCapacity会直接拒绝多余的请求,如burstCapacity设置的值是20,那么一旦请求超过20,多余的请求将被丢弃,不再执行。
服务治理是微服务架构中最核心最基本的模块。Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。