常见的微服务架构:
????????nacos有注册中心的作用,我们常见的配置中心还有zk和eureka
微服务 CAP? 原则:1 、 C(consistency): 一致性,同一时刻的同一请求的实例返回结果相同,属于强一致性性,也就是说,在集群环境中,对外提供的服务信息是完全一致的,但是在效率上面可能会有一定的损耗;2 、 A(availability): 可用性,所有实例的读写请求在一定的时间内可以得到正确的响应,它是弱一致性,可能在极短的时间内,不同实例获取到的信息是不一致的,但是服务可用并且最终数据是一致的;3 、 P(Partition tolerance): 分区容错性,在网络异常的情况下,仍旧能够提供正常的响应,这是在微服务系统中必须要保证的;
启动:
方式一:
默认以集群的方式启动
方式二:windows命令启动 (后缀standalone指的是以单例的方式进行启动)
.\startup.cmd -m standalone
访问:http://localhost:8848/nacos
开启后默认账号密码均为nacos,即可访问服务
????????idea 创建springboot项目,引入jar包。
<spring-cloud-alibaba-version>2.1.3.RELEASE</spring-cloud-alibaba-version>
<!--引入nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba-version}</version>
</dependency>
// nacos使用的注解
@EnableDiscoveryClient
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #服务地址(默认端口号为8848)
application:
name: cloud-user-provider #服务名
注意:版本对应问题
启动(三个):
启动后在集群管理即可查看:
? ? ? ? nacos实现负载均衡是通过内置的?Ribbon?实现的。默认的负载均衡策略是使用的?Ribbon?中的默认策略 —轮询(我的端口号为3333)。
? ? ? ? 负载均衡实现前提,服务名相同
server:
port: 8881
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:3333 #服务地址(默认端口号为8848)
application:
name: cloud-user-provider #服务名
dubbo:
application:
name: cloud-user-provider
scan:
base-packages: com.hz.service.impl #扫包
protocol:
# 协议名称
name: dubbo
port: -1
#注册中心
registry:
#注册中心地址列表,同一集群内的多个地址用逗号分隔
address: nacos://127.0.0.1:3333
新建配置:
idea新建项目,引 jar 包,
<!--为了测试使用spring注解引入-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba-version}</version>
</dependency>
<!--nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba-version}</version>
</dependency>
注意:使用nacos 作为配置中心时,需要创建一个 bootstrap.yaml 和 application.yaml 两个配置文件,bootstrap.yaml 的优先级 高于 application.yaml ,加载时实现加载 bootstrap.yaml 中的相关配置
?