微服务架构风格图
Eureka简介
注册发现中心
Eureka来源于古希腊词汇,意为“发现了”。在软件领域, Eureka是Netflix在线影片公司开源的一个服务注册与发现的组件,和其他Netflix 公司的服务组件(例如负载均衡、熔断器、网关等)一起,被Spring Cloud社区整合为Spring Cloud Netflix模块。Eureka是Netflix贡献给Spring Cloud的一个框架! Netflix给Spring cloud 贡献了很多框架。
分布式微服务-----CAP原则
一致性(Consistency):服务器中数据保持一致
可用性(Availability):当一个服务器挂掉时,集群中其他服务器可以继续使用,对外提供服务
分区容错性(Partition tolerance):允许各个原因导致的各个服务器中的数据短暂不同---必须满足
CAP原则指出以上三个要素只能同时实现两点,三者不能同时满足
Eureka为AP(数据可能不一致但是拥有高可用性)
zookeeper为CP(数据一致但是有服务器宕机时整个服务会有几分钟不能提供服务)
Eureka快速入门
两种Eureka
1.搭建一个注册中心,提供注册的服务----Eureka-server
2.创建客户端,继续注册----Eureka-client
注意:Eureka-server可以自己注册自己
搭建注册中心
创建一个Eureka依赖的SpringCloud项目
Eureka Server依赖本身提供了web服务
在pom文件中修改SpringBoot和SpringCloud依赖的版本
编辑配置文件
server:
port: 8761 #Eureka 的默认端口是8761
spring:
application:
name: eureka-server-a #自定义应用名称,一般使用 - 不要使用特殊字符
在主启动文件上加上注解@EnableEurekaServer
package com.ys;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //启动Eureka服务
public class EurekaServerAApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerAApplication.class, args);
}
}
启动项目,在网页打开
一个应用可以拥有多个实例
搭建客户端
选择依赖,Eureka Discovery Client 不包含web依赖所以要单独加入
在pom文件中修改SpringBoot和SpringCloud依赖的版本
编辑配置文件
server:
port: 8080 #客户端的端口没有要求
spring:
application:
name: eureka-client-a
#注册的含义是指将自己的信息(ip,端口(port)等等)发送到(某个地方)
eureka:
client:
service-url: #指定注册地址
defaultZone: http://localhost:8761/eureka #将信息发送到该地址 注意defaultZone没有提示
在主启动类上添加注解@EnableEurekaClient
package com.ys;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient //启动客户端服务
public class EurekaClientAApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientAApplication.class, args);
}
}
打开网页,查看实例列表,查看是否注册成功
安装相同的方法再创建一个客户端
最后结果如下
同一个应用创建多个实例
因为前面创建的客户端的例子没有写入其他东西,使用进行复制修改端口即可达到目的
将任意一个客户端的启动文件进行复制
并使用 --server.port:端口号 进行端口的修改 并启动
查看网页结果