发表于: 2018-06-11 21:14:56
1 673
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
一、实现多个provider的切换
1.多建立一个providerB,其他都一样,主要就是将输出结果换一下
然后开启providerB,结果发现开启失败
应该是我的端口重复的原因,因为其原理是在注册中心注册具体接口的实现类,而查找也是按照接口查找,所以为了体现分布式,其具体实现的接口必须一样,起码功能上得一致,这样用户切换了也不知道才算是完成了分布式。然后那个application name其实没什么,这个name如果一致那么在注册中心看起来我就只开了一个服务,但是却有两个应用开启
换一个端口号20881尝试一下
可以看到换了端口就成功了。
然后是访问,访问了多次,发现A和B都访问成功了
但是这里有点小问题,我的A和B按道理设置的user是不一样的,但是这里返回的值却是一样的,clean后重新实验了一次
可以看到,这次是上面一样,下面不一样。
恍然大悟,这是因为每一次调用这个接口的时候就实现了一下负载均衡随机选择了其中一个provider,所以看起来是一个方法调用的,但是其实是按照接口来实现的随机,所以一个方法调用了两个provider后,就会使得结果产生不是一个provider提供的样子来。
这也是为什么我们说分布式要保证只是端口不一样,其他都需要一样,否则用户点击同样的两次按钮,出来的结果不一样就是Bug了。
2.看一下图形化界面里面此时的数据状态
可以看到,此时服务数是1,因为其对应的是实现service接口的数目
然后应用数是2,因为其对应的是我的application name
可以看到因为我的两个provider取的同一个名字,所以算作了一个
然后提供者是2,也就是我的两个provider,其区分就是端口号的不同,在这个页面还可以设置权重,权重就是nginx里面的wight,越高使用率越高
最后是消费者2,因为我开了两次调用的main方法,所以这里是2
3.因为这个不像RMI那样需要在配置文件里面写死需要的服务端口,服务等,所以这里就算中途有一台provider挂了,也一样可以请求,不会受到影响,因为其是按照接口来寻找服务的,只要这个接口还有方法活着就可以了。
然后看一下去负载均衡的策略
在负载均衡里面可以为每个服务的每个方法设置负载均衡的策略,一共有三个方法,随机,轮询和最小并发。
前面两个都知道,最少并发的意思是系统会自动根据反应时间来安排其随机到的概率,反应快的随到的概率大,以降低同时段并发数,避免拥堵。
一般我们都不在代码里面写死具体的策略,而是根据具体服务器的情况在控制台上去调节它。
二、复习一波基础
1.用编译器运行源代码,编译器会检查错误,如果有错就要改正次啊能产生正确的输出。此时产生的就是编译时异常。
2.每个java程序最少都会有一个类或者一个main,打包完的jar可以没有main函数,因为不运行只是调用的话是不需要main函数的,也可以有多个main函数,只需要打包的时候指定主方法入口就可以。
main()是程序的起点,因此applicationContext.xml需要在main函数中加载,否则无法读取里面的内容。
3.面向过程的编程是以方法为主体,形参放指定对象参数;面向对象是以各个对象为主体,其动作就是里面的方法。
4.类不是对象(确是用来创建它们的模型)。类是对象的蓝图,它会告诉虚拟机如何创建某种类型的对象。
5.八种主数据类型的从小到大排序BCBSILFD,白痴鄙视我老发呆。
6.变量存取的是一个引用,所以无关大小,若两个引用指向同一地址,则修改其中一个的的属性,另一个也会改变,如果你不想被改变,可以使用final固定下来。
7.引用在创建时声明了类型,则引用指向空间里面只能放此类型的对象。
8.数组也是对象,其数组名就是一个引用,数组里可以是主数据类型也能是引用,但是不能混杂。
9.java是通过值传递的,也就是说通过拷贝传递,方法无法改变调用方所传入的参数。
10.方法只能声明单一的返回值,但是我们可以忽略返回值,只单纯调用方法。
11.将实例变量标记为private,将getter个setter标记为public就能实现数据的封装,可以避免直接修改数据,在setter中设置方法就可以限制数据的取值范围。
12.实例变量声明在类中,是自带默认值的,而局部变量声明在方法中,没有默认值,必须设置初始值。
13.==判断的是在当前内存空间的值的字节组合是否相同,而equals()则是判断引用指向的空间中的量是否相等,如果是对象不需要同一对象,只需对象实例变量相等即可。
明天计划的事情:(一定要写非常细致的内容)
1.准备小课堂
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
dubbo的负载均衡策略
评论