写在前面
SpringCloud,微服务全家桶,很火,来学一下,本文只是简单使用,并没有仔细研究其原理,还请各位多指教
eureka是一个基于Rest的服务,用于做服务的注册发现,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件,功能类似于Dubbo得注册中心,Zookeeper
1.搭建环境
前面我们已经搭建了springboot项目,服务提供者, 服务消费者,和公共的数据模块,我们前面是通过RestTemplate访问的,,我们现在需要将服务进行注册与发现,,
2.服务注册中心
我们需要新建一个eureka的注册中心,用于服务的注册于发现
,我们新建一个springboot项目
pom文件,引入eureka-server的maven坐标
服务注册中心的yml文件
指定eureka的服务端的名称,eureka的访问路径,以及服务提供者,和服务消费者访问路径
在启动类加入eurekaserver的注解
3.服务提供者
1.修改pom文件
2,修改yml文件
3.在启动类加入注解
启动即可
然后访问 localhost:7001 即可访问到服务注册中心了
完善服务提供者信息
在服务注册中心想查看服务的时候,显示了很长的名字,而且像看这个服务的ip地址,需要自定义服务的信息
修改服务提供者的yml文件如下
修改父工程的pom文件,添加如下代码
在服务提供者的主启动类加入注解@EnableDiscoveryClient //服务发现
在控制器中添加
@RequestMapping(value = "/discovery", method = RequestMethod.GET)
public Object discovery()
{
List<String> list = client.getServices();
System.out.println("**********" + list);
List<ServiceInstance> srvList = client.getInstances("SPRINGCLOUD-PROVIDE-DEPT");
for (ServiceInstance element : srvList) {
System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
+ element.getUri());
}
return this.client;
}
访问即可显示服务
2.eureka集群
在新建两个eureka的server项目,直接和前面的eureka-server项目一样,
hostname的是虚拟域名,直接在hosts文件修改即可
修改对应项目的yml文件
其他也一样,就不贴了
修改服务提供者的注册地址为集群
启动即可
3.eureka和zookeeper的区别
CAP
c: 强一致性
a: 可用性
p:分区容错性
eureka的自我保护
zookeeper保证cp
在集群的时候,zookeeper的leader挂了,会重新选举leader,这个是需要时间的,那么这段时间zookeeper的集群是不可用的,
eureka保证ap
eureka的各个节点都是平等的,几个节点挂掉不会影响正常节点的使用,剩余节点依然可以提供服务的注册于查询服务,而eureka客户端再向eureka注册时发现连接失败,则会自动切换至其他节点,只要有一条eureka在,就能保证服务可用(高可用),只不过查到的信息可能不是最新的,
QQ群:552113611