微服务基础知识

1、分布式概念

1.1 集群

几台服务器一起实现同一服务

1.1.1节点:集群中的一个服务器

1.2 分布式

将不同的业务分布在不同的地方

1.3 远程调用

服务之间的相互调用
SpringCloud中使用 HTTP+JSON的方式完成远程调用。

1.4负载均衡

分布式系统中,A服务需要调用B服务,B服务在多台服务器中都存在,A调用任意一个服务器均可完成功能。

1.5服务注册/发现&注册中心

A 服务调用 B 服务,A 服务并不知道 B 服务当前在哪几台服务器有,哪些正常的,哪些服务 已经下线。解决这个问题可以引入注册中心。

如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的 服务。

1.6配置中心

每一个服务最终都有大量的配置,并且每个服务都可能部署在多台服务器上。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置。

配置中心用来集中管理微服务的配置信息

1.7服务熔断&服务降级

a服务调用B服务,B服务调用C服务 ,如果一旦C服务出问题
A、B服务将无法正常运行,可能出现请求积压,最终导致服务雪崩

1.7.1服务熔断

设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开 启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认 的数据

1.8API网卡

在微服务架构中,API Gateway 作为整体架构的重要组件,它抽象了微服务中都需要的公共 功能,同时提供了动态提供路由服务,客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决很多 API 管理难题。

API网关就像大商场唯一的唯一的一个安检入口,我们从这个入口进来,能放行过来的请求就是后台需要处理的

笔记

从码云把项目拉到idea

首先配置好ssh密钥

创建模块

创建父类的pom文件

修改pom文件
打包方式为pom
修改git忽略文件
添加
**/mvnw.cmd
**/mvnw
**/.mvn
**/target/

1.1 pom 打包形式

在父级项目中的pom.xml文件使用的packaging配置一定为pom。父级的pom文件只作项目的子模块的整合,在maven install时不会生成jar/war压缩包。

怎么解决circle问题

相互包含的两个依赖换版本

@RunWith(SpringRunner.class)

放在测试类上
注解的意义在于Test测试类要使用注入的类,比如@Autowired注入的类,

有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效,

不然直接一个NullPointerExecption

是在Springboot启动类上面添加

是在Springboot启动类上面添加,一般又有dao层才用在这个
添加@MapperScan(“com.winter.dao”)注解以后,com.winter.dao包下面的接口类,在编译之后都会生成相应的实现类
有@MAPPER就不需要加@MapperScan,有一个就行

view中没有service

在这里插入图片描述

<component name="RunDashboard">
  <option name="configurationTypes">
    <set>
      <option value="SpringBootApplicationConfigurationType" />
    </set>
  </option>
</component>

加入这些代码

在这里插入图片描述
nacus作为配置中心
作为注册中心
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/README-zh.md
官方文档

nacos

安装过程中遇到的问题

docker常用命令

docker 镜像: ----java中 class

docker容器 : ----java中 class new 出来的实例对象
安装过程中可以排查那里问题
端口是否可以访问,可以的话就是配置问题,看logs查看错误信息

注册中心,远程调用接口

首先注入feign依赖

org.springframework.cloud
spring-cloud-starter-openfeign

某个接口需要远程调用;那么就在这个接口上注解@FeignClient(“mymall-coupon”)
意思是我可以远程调用,然后里面的意思是,这个接口在注册中心mymall-coupon里面你去找,然后这个接口去哪里实现呢,在接口里注解 @RequestMapping(“/coupon/coupon/member/list”)
public R membercoupon();
意思是在ctroller中这个路径下的方法返回值给我
版本问题
在这里插入图片描述
注册不可少三个
启动类上加@EnableDiscoveryClient注解
配置类中加这些
第一个
cloud:
nacos:
discovery:
server-addr: 114.55.208.142:8848
第二个
application:
name: mymall-coupon
#配置中心,怎么动态的修改
首先
在这里插入图片描述

在这里插入图片描述
注意配置文件里的格式千万不能错误,不能有空格

nacos作为配置中心更多的细节

我想给同一个配置分配不同的空间
比如双十一时候我用11这个空间里的A配置(内容可以不一样,名字一样)
双十二的时候我用12这个空间里的A配置(内容可以不一样,名字一样)
但是系统默认是public这个空间里的配置

踩坑遇到的问题
首先配置文件格式一定要写对
版本问题,是否冲突,是否覆盖
在这里插入图片描述
在这里插入图片描述

以上是两个常出错的点

微服务怎么配置命名空间呢

在这里插入图片描述
coupon的空间放的都是coupon的配置比如dev配置,prod配置,test配置(这些是分组)

网关

满足过滤条件的给你链接到这个相应的网址
建立一个网关的模块
在这里插入图片描述
建立的时候选择gateway

网关的yml配置

spring:
  cloud:
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu

        - id: qq_route
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值