一般项目的 ememem.
单体架构--耦合度高,但简单
分布式架构--耦合较低,但还可以细分,模块之间的交互和部署也比较麻烦
微服务架构---耦合度极低,但各个模块之间的交互,以及部署都比较麻烦
为了处理各个模块之间那些麻烦的东西,像SpringCloud,Dubbo,SpringCloudAlibaba微服务框架就应运而生。
各个微服务框架比较以及其所用技术栈
没什么用,不写了’
直奔主题
各个模块之间的远程调度
首先在配置restTemplate
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@LoadBlanced是开启负载均衡的。
然后可以用
restTemplate.getForObject(url,User.class);
//url的另一个模块的的接口,User是请求的数据类型。
//发送get请求
restTemplate.postForObject(url,User.class) //发送poat请求。
反正就是用RestTemplate发。
下一个问题。
一个模块还可以分为为若干模块。哪怎么确定请求那个。
这就不得不引出Eureka
Eureka
模块二有好多个,模块一怎么知道请求哪一个??????????
Eureka的作用就体现出来了
下面来记录如何使用Eureka
A,配置Eureka服务端
1,引入eureka的服务端依赖(Eureka也算一个模块)
<!--eureka服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2,在Eureka模块的springBoot启动类上加上注解
@EnableEurekaServer
3,在配置文件里进行配置
spring:
application:
name: eurekaserver # eureka的服务名称
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
B,配置客户端
1,在客户端模块中加如客户端依赖(客户端就是上面说是模块一,二)
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>-->
2,在配置文件中添加(就是在yaml)
spring:
application:
name: orderservice
#eureka:
# client:
# service-url: # eureka的地址信息
# defaultZone: http://127.0.0.1:10086/eureka
在另一个模块中也添加以下
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
spring:
application:
name: userservice
完成操作后,在启动模块时。就会注册到Eureka
哪怎么访问呢
就将
restTemplate.getForObject(url,User.class);
//url的另一个模块的的接口,User是请求的数据类型。
//发送get请求
restTemplate.postForObject(url,User.class) //发送poat请求。
中的
url = http://localhost:8081/user //原来的
url = http://userservice/user //现在的 吧ip换成请求模块的名称
nacos注册中心
nacos下载
找到自己要下的版本,然后解压到一个目录下。就可以使用了。
启动nacos
在.../nacos/bin/目录下有startup.cmd 。点击它就启动了。启动后去下图:
红箭头指向的网址为nacos图形网页端。
接下来,在父项目目中引入spring-clond-alibaba的管理依赖。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在对应的子模块中引入nacos依赖,并在.ymal文件中配置相关信息。
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
spring:
cloud:
nacos:
service-addr: localhost:8848
启动服务,然后就能在nacos中看到相关服务信息。
nacos分级存储模型
spring:
cloud:
nacos:
service-addr: localhost:8848
discovery:
cluster-name: HZ
server-addr:
// 修改负载均衡规则,使同一个集群中的服务模块优先被访问
userservice: # 要配置的微服务名称。
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
discovery.cluster-name:就是配置级群的。并修改负载均衡规则。
通过改变服务的权重,可以改变服务被访问到的概率。
0~1,越大被访问的几率就越大。在nacos网页端就能该。
nacos环境隔离。
Feign——http客户端
入门
1,引入依赖。
2,在启动类添加注解。
3,编写Feign客户端。