在线教育项目第十天

一、微服务

概念
    本项目中父工程中的不同模块占用不同的端口号
    微服务是一种架构风格/方式
    一个项目拆分为多个服务,每个服务独立运行,每个服务占用独立进程,可以将每个服务单独部署在不同的服务器上
优点
    程序扩展方便,部署方便,代码量减少,容易定位问题
    每个模块可以使用不得存储方式,有的使用redis,有的使用MySQL
    每个模块可以使用不同的语言开发
如果系统提供的业务是偏底层的,比如操作系统内核、存储系统、网络系统、数据库系统等,功能之间紧密配合,不适合使用微服务
常用框架
    Spring Cloud
    Dubbo
    Dropwizard

二、Spring Cloud

一系列框架的集合,使用这些框架可以实现微服务
使用要依赖于Springboot
Springboot是快速构建Spring的脚手架,SpringCloud是一系列框架的总称,要使用SpringCloud需要依赖于Springboot才能实现里面的功能
组件
    服务发现 Netflix Eureka (Nacos) 注册中心
    服务调用 Netflix Feign
    熔断器 Netflix Hystrix
    服务网关 Spring Cloud GateWay
    分布式配置 Spring Cloud Config (Nacos)
    消息总线 Spring Cloud Bus (Nacos)
注意和Springboot的版本对应,参考https://start.spring.io/actuator/info ,这里springboot2.4.1对应springcloud2020.0.1
版本后缀
    SNAPSHOT 快照版本 随时可能修改
    M 里程碑版本 实现了预定的目标
    SR 正式版本
    GA 稳定版本

三、使用微服务实现删除小节的同时删除视频

1、注册中心

edu模块中删除小节的方法调用vod模块中的删除视频方法
不能直接在edu中引入vod的依赖,这会造成两个模块之间产生关联
在注册中心Nacos中注册要互相调用的两个模块,注册之后就可以实现互相调用
常用注册中心
    Eureka
    Zookeeper
    Consul
    Nacos 原生 go开发
Eureka是springcloud中原始的注册中心,但其在2.0遇到性能瓶颈,停止维护,所以现在通常使用阿里巴巴提供的Nacos

2、Nacos

可以作为注册中心 配置中心 消息总线
流程
    Nacos作为注册中心,vod作为Provider,edu作为Customer
    Provider和Customer在注册中心根据ip,端口号进行注册
    CUstomer在注册中心得到Provider的ip,端口号,然后直接访问Provider,调用对应方法,返回结果
安装
    https://github.com/alibaba/nacos/release
    不要选择beta版本,其用于公测
    解压
使用
    打开bin目录,双击startup.cmd启动
    访问Nacos http://localhost:8848/nacos 用户名和密码都是nacos
    服务管理-服务列表显示注册的服务

3、将service_edu注册到Nacos中

在service模块中引入依赖
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
在要注册的模块service_edu的application.properties文件中进行配置
    # nacos服务地址
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在要注册的模块service_edu的启动类上加上注解@EnableDiscoveryClient,表示进行注册

4、将service_vod注册到Nacos中

在要注册的模块service_vod的application.properties文件中进行配置
    # nacos服务地址
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在要注册的模块service_vod的启动类上加上注解@EnableDiscoveryClient,表示进行注册

5、测试

启动service_edu和service_vod
访问Nacos,就可以在服务列表中看到service_edu和service_vod了,具体的名称是application.properties中配置的服务名,注意不要加_
问题:启动报错db.num is null
解决:默认的启动里面是配置的集群版的,本机运行的话要改成单机版即可
    打开解压后的文件夹/bin/startup.cmd 右键编辑,在set MODE="cluster"前面加上rem注释,然后加上set MODE="standalone" 参考https://www.freesion.com/article/87611162023/
双击shutdown.cmd停止nacos

6、使用Feign组件实现服务调用

Netflix开发的
service中引入依赖
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
在调用端service_edu的启动类上加上注解@EnableFeignClients
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值