微服务的服务集群里的微服务互相调用时,可以用注册中心统一管理每个服务的ip、端口、功能等,在上面拉取就好
同理还有一个配置中心,统一管理配置的变更,实现配置的热更新
为了管理用户可以访问的微服务,还需要服务网关来校验用户身份、负载均衡,路由具体服务
数据库的集群还可以有分布式缓存,提高效率,使用高并发
面对复杂的大量数据统计和分析,还有分布式搜索
还需要用消息队列来实现异步通信,提高服务的并发性
为了解决服务的异常定位,还可以使用分布式日志服务,统计所有服务的日志并分析
还有系统监控和链路追踪,对服务状态,cpu负载,内存占用等进行管理,对问题进行定位
对于大量的服务部署,我们可以使用Jenkinsdui进行统一编译,基于docker形成镜像,再基于kubernetes和RANCHER这样的技术实现自动化部署,这套技术叫做持续集成。
完整技术栈图片长这样
涉及到的技术如下
认识微服务
不同微服务架构使用的技术内容
SpringCloud的大致技术组成
简单的远程调用(基于http)
先在想要发出请求的那个项目的Application里注册以下bean
(当然,写在任何配置类里也行,此处只是因为启动类默认也是配置类)
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
然后到想要远程调用的service里,模仿如下代码(记得提前封装好要用来接收的实体类)
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2.利用RestTemplate发起http请求,查询相关用户
// 2.1.url路径
String url = "http://localhost:8081/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
// 3.完成封装
order.setUser(user);
// 4.返回
return order;
}
}
Eureka入门
针对一个业务,存在一个提供者和一个消费者,即接口提供者和接口调用者
原理分析
由于在业务实现中,服务调用的消费者可能会调用不同提供者的接口,所以需要一个注册中心eureka-server来动态存储这些接口的位置,方便消费者调用
过程:
1.服务提供者向注册中心注册服务信息
2.注册中心记录名称和端口乃至消费者的名称端口
3.消费者向注册中心拉取所需的服务信息
4.消费者利用==负载均衡==挑选出所需的端口
5.消费者远程调用所需服务
5.1服务会每30秒向注册中心发送一次心跳信息以表明自己运行正常,一旦不跳了就会把它从列表中剔除,消费者也就拉取不到了
==什么是负载均衡==这点在14p好像会说
eureka注册中心的搭建方法
大致事先配置如下图
先右键自己的项目最大文件夹,右键New->Module->Maven->起名为eureka-server
后finish
然后在新建的eureka-server的pom文件中加入以下依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
如果出现了报错那就多加个version指定或者重新创建一次这个子项目
然后创建如下启动类(记得预先封装好几层文件夹)
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class,args);
}
}
此处@EnableEurekaServer
如果出现爆红可能是springcloud依赖引入版本太低的问题,具体可以看这个网址。
然后新建yml文件,加入以下配置
server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
此处之所以eureka还配置了自己的地址信息,是用于未来要用到eureka集群的情况