springCloud学习

微服务的服务集群里的微服务互相调用时,可以用注册中心统一管理每个服务的ip、端口、功能等,在上面拉取就好

同理还有一个配置中心,统一管理配置的变更,实现配置的热更新

为了管理用户可以访问的微服务,还需要服务网关来校验用户身份、负载均衡,路由具体服务

数据库的集群还可以有分布式缓存,提高效率,使用高并发

面对复杂的大量数据统计和分析,还有分布式搜索

还需要用消息队列来实现异步通信,提高服务的并发性

为了解决服务的异常定位,还可以使用分布式日志服务,统计所有服务的日志并分析

还有系统监控和链路追踪,对服务状态,cpu负载,内存占用等进行管理,对问题进行定位

对于大量的服务部署,我们可以使用Jenkinsdui进行统一编译,基于docker形成镜像,再基于kubernetes和RANCHER这样的技术实现自动化部署,这套技术叫做持续集成。

完整技术栈图片长这样

image-20220926181052743

涉及到的技术如下

image-20220926181319488

认识微服务

不同微服务架构使用的技术内容

image-20220926185757038

SpringCloud的大致技术组成

image-20220926190506799

简单的远程调用(基于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好像会说

image-20220927212609560

eureka注册中心的搭建方法

大致事先配置如下图

image-20220927213139434

先右键自己的项目最大文件夹,右键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集群的情况


   转载规则


《springCloud学习》 狐狸狐涂 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Redis学习 Redis学习
Redis学习引入:NoSQL数据库 我们为了处理在访问量较大时的服务器CPU和内存压力,有时会用到服务器集群(这个可以去看隔壁 springCloud?),但是在处理访问session时,分开的服务器会导致session信息不能共通。在原
2022-10-19
下一篇 
  目录