服务治理基本概念
- 服务的伸缩控制
- 身份验证与授权 *
- 服务注册与发现 *
- 反向代理与负载均衡
- 路由控制 *
- 流量切换 *
- 日志管理 *
- 性能度量、监控与调优 *
- 分布式跟踪 *
- 过载保护 *
- 服务降级 *
- 服务部署与版本升级策略支持 *
- 错误处理 *
- 国际化
服务的伸缩控制
身份验证与授权
服务注册与发现
- dubbo zookeeper
反向代理与负载均衡
- vertx
- nginx
给一个有序数组,查找出k所在位置
/** |
从有序的数组中,找出第一个大于N的数字的位置
|
分别计算1-9个头像在九宫格中的位置
|
-------------------n=1--------------------- |
二进制中1的个数
int countBits(int n) {
int count=0 ;
while (n>0) {
count++ ;
n &= (n - 1) ;
}
return count ;
}
复杂度: < log2n
方案二
/**
* Returns the number of one-bits in the two's complement binary
* representation of the specified {@code int} value. This function is
* sometimes referred to as the <i>population count</i>.
*
* @param i the value whose bits are to be counted
* @return the number of one-bits in the two's complement binary
* representation of the specified {@code int} value.
* @since 1.5
*/
public static int bitCount(int i) {
// HD, Figure 5-2
i = i - ((i >>> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
i = (i + (i >>> 4)) & 0x0f0f0f0f;
i = i + (i >>> 8);
i = i + (i >>> 16);
return i & 0x3f;
}
复杂度: 1
方案三
public static int countBit1(int n) {
int count=0 ;
int temp=1;
while (temp<=n) {
if((temp&n)>0){
count++ ;
}
temp<<=1;
}
return count ;
}
public static int[] countBits(int num) {
int[] ret = new int[num + 1];
for (int i = 0; i <= num; i++) {
int div = i / 2;
int mod = i % 2;
if (mod == 1) {
ret[i] = ret[div] + 1;
} else {
ret[i] = ret[div];
}
}
return ret;
}
1982,Lamport 提出了一种计算机容错理论,并于1900年论证。
这是一种
基于消传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。
时间时钟、面包店算法、拜占庭将军及paxos算法的创建性容错
提高分布式系统容错性的一致性算法
一致性算法
Proposer
Acceptor
Learner
参与者之间可以进行通信,可以记录一些信息,来确定最终的值
消息内容不会被篡改
在抢占式访问权的基础上引入多acceptor
保证一个epoch,只有一个proposer运行,proposer按照epoch递增的顺序依次运行。
新的epoch的proposer采用后者认同前者的思路运行。
在肯定旧epoch无法生成确定性取值时,新的epoch 会提交自己的取值。不会冲突。
一旦旧epoch形成确定性取值,新epoch肯定可以获取到此取值,并且会认同此取值,不会破坏。