集群:多台服务器跑的都是一套完整的代码;(集群一般都是哨兵模式,一主二从)
新建microservicecloud-eureka-7002和microservicecloud-eureka-7003
按照7001为模板粘贴pom.xml
<dependencies>
<dependency><!-- eureka-server服务端 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 修改后立即生效,热部署 (一修改,自动发布,自动构建) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
修改7002和7003的主启动类
修改映射配置(找到C:\Windows\System32\drivers\etc路径下的hosts文件)
让它一个localhost有3个不同的别名
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
3台eureka服务器的yml配置
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不想注册中心注册自己
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ # 设置与Eureka server交互的地址查询服务和注册服务
#与7002和7003服务器同步
#单台服务器的配置 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不想注册中心注册自己
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/ # 设置与Eureka server交互的地址查询服务和注册服务
#与7002和7003服务器同步
#单台服务器的配置 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
port: 7003
eureka:
instance:
hostname: eureka7003.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不想注册中心注册自己
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ # 设置与Eureka server交互的地址查询服务和注册服务
#与7002和7003服务器同步
#单台服务器的配置 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
microservicecloud-provider-dept-8001微服务发布到上面3台eureka集群配置中(修改8001的application.yml配置文件)
server:
port: 8001 # 当前微服务的端口
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
type-aliases-package: com.yt.springcloud.entity # 所有饿entity实体类所在包
mapper-locations:
- classpath:mybatis/mapper/**/*.xml # mapper映射文件
spring:
application:
name: microservicecloud-dept # 对外暴露的微服务的名字(很重要)
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包
url: jdbc:mysql://localhost:3306/cloudDB01 # 数据库名称
username: root
password: hannong
dbcp2:
min-idle: 5 # 数据库连接池的最小维持连接数
initial-size: 5 # 初始化连接数
max-total: 5 # 最大连接数
max-wait-millis: 200 # 等待连接获取的最大超时时间
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #去注册中心的地址
#defaultZone:7001,7002,7003 去注册中心的地址
instance:
instance-id: microservicecloud-dept8001 #修改eureka的服务路径名称
prefer-ip-address: true #访问路径可以显示ip地址
info:
app.name: yt-microservicecloud #
company.name: www.yt.com #
build.artifactId: $project.artifactId$ #
build.version: $project.version$ #
启动7001,7002,7003,8001的启动类(访问地址:http://eureka7001.com:7001/)
CAP3进2
最多只能同时教好的满足两个;
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点,而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要实现的.
所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点;
C:Conslstency(强一致性)
A:Availability(可用性)
P:Parition tolerance(分区容错性)
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,因此,根据CAP原理将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类:
CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强太;
CP-满足一致性,分区容忍必的系统,通常性能不是特别高;
AP-满足可用性,分区容错性的系统,通常可能对一致性要求低一些;