微服务框架

简介: 框架的名称有nacos、openFeign、gateWay

一.Nacos配置管理

1.导入依赖:

<!--nacos配置管理依赖-->

<dependency>

 <groupId>com.alibaba.cloud</groupId>

 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>

2.创建一个bootstrap.yml让服务启动的时候直接加载到本地,它的优先级最高

3.添加配置类:

spring:

application:

        name: userservice # 服务名称

     profiles:

  active: dev # 当前使用dev环境

  cloud:

    nacos:

      server-addr: localhost:8848

      config:

        file-extension: yaml # 文件后缀名

4.启动Nacos,创建配置文件

5.定义一个xxxProperties类放到config包中,加入@ConfigurationProperties(prefix = "pattern"),自动刷新,@Component注解:

6.编写要注入的属性

二.配置自动刷新

第一种:在controller加@RefreshScope注解

第二种:在@ConfigurationProperties(prefix = "pattern")

三.多环境配置共享

1.创建一个配置文件不带dev的,如userservice.yaml

2.执行的优先级:

四.Nacos集群搭建

1.用nginx来做负载均衡

2.DNS做域名解析,写入网站名称会解析成地址+端口

3.SLB是负载均衡

4.进入nocos的conf目录下,把cluster.conf.example -->变cluster.conf。通过命令窗口运行ipconfig获取IP地址,换为自己的地址。

5.进application.properties,把数据连接给放开,把端口改为在cluster.conf的任意一个地址

6.有几个地址就复制几个nacos,然后逐个启动

7.最后访问nacos看追加的是哪个地址,替换就得了

8.用ngixn做反向代理,添加配置文件:

upstream nacos-cluster {

server 自己地址:8845;

server 127.0.0.1:8846;

server 127.0.0.1:8847;

}

server {

 listen       80;

 server_name  localhost;

 location /nacos {

   proxy_pass http://nacos-cluster;

 }

}

9.把yaml里nacos的端口改为nginx的端口,如何把端口指向一个端口而已就会导致有一个集群宕机就不会运行了

五.OpenFeign(主要是代替RestTemplate来调用个个服务的)

1.导入依赖

<dependency>

   <groupId>org.springframework.cloud</groupId>

   <artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

2.在启动类注入@EnableFeignClients一个注解

3.创建一个client包,定义一个UserClient接口,里面写着要调用其他服务controller的接口

4.在接口上加注解@FeignClient("userservice"),userservice是服务名

5.然后根据它自带的id查询方法

六.配置feign日志

1.第一种直接使用配置文件(局部)

2.第二种使用配置类(全局):

3.在启动类加@EnableFeignClients(defaultConfiguration = FeignClientsConfiguration.class)

七.feign的性能优化

1.使用Apache HttpClient代替默认的URLConnection连接池(面试题)

2.引入feign-httpclient依赖

3.配置文件:

八.feign的最佳实践

1.先创建一个api模块,把clent都移到模块中,然后哪个模块想调用直接继承该模块就行

2.注意:换了网络就得换ip地址,如果启动报com.alibaba.nacos.api.exception.NacosException: server is DOWN now, please try again later!错,就得把nacos里的data/protocol删除,重新启动

3.要在消费方的启动类加@EnableFeignClients(basePackages = "cn.itcast.feign.client")注解

九.GateWay网关服务

1.创建一个模块,也要放在注册中心,易于去发现别的服务

2.导入网关依赖和nacos服务与注册依赖

3.配置文件

十.路由断言(类似于if判断,为false就会检测出来,为true就放行)

1.配置文件

2.最好是放到nacos里

十一.网关过滤器

1.需要在网关配置里添加过滤器,通过请求头(给单独的服务进行拦截)

2.对所有的请求value为185都放行

3.定义全局过滤器类实现GlobalFilter接口

4.注入到springbean容器中@Component

5.获取请求头、判断请求头、结果处理

相关文章
|
21天前
|
存储 运维 监控
|
21天前
|
缓存 负载均衡 算法
|
21天前
|
Dubbo Java 微服务
微服务框架(三十二)微服务系统架构
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为微服务系统架构
|
8月前
|
Dubbo 安全 应用服务中间件
OpenSergo & Dubbo 微服务治理最佳实践
本文分享通过 OpenSergo 及 Dubbo 体系化落地微服务治理,保障微服务稳定性。
|
8月前
|
Dubbo Java 应用服务中间件
微服务框架对比分析
微服务框架对比分析
|
JSON 前端开发 Java
如何基于gRPC沟通微服务框架
本文我们来讲解一下如何使用 gRPC构建微服务,gRPC是一个开源框架,可用于构建可扩展且高性能的微服务并创建服务之间的通信。
249 0
|
运维 监控 Java
微服务一点都不“微”
微服务一点都不“微”
|
存储 缓存 关系型数据库
Kratos微服务框架实现权鉴 - Zanzibar
用户的权限管理对每个项目来说都至关重要。不同的业务场景决定了不同的权限管理需求,不同的技术栈也有不同的解决方案。如果你面对一个非常复杂的业务,需要实现极为灵活的权限配置,并且同时对接多个服务怎么办呢?谷歌的一致性全球授权系统Zanzibar可以帮到你。
635 0
Kratos微服务框架实现权鉴 - Zanzibar
|
JSON Kubernetes Cloud Native
Kratos微服务框架实现权鉴 - OPA
现在,策略通常是它实际管理的软件服务的一个硬编码功能。Open Policy Agent让您可以将策略从软件服务中解耦出来,这样,负责策略的人员就可以从服务本身中分离出来,对策略进行读、写、分析、版本、发布以及一般的管理。OPA还为您提供了一个统一的工具集,使您可以将策略与任何您喜欢的软件服务解耦,并使用任何您喜欢的上下文来编写上下文感知策略。简而言之,OPA可以帮助您使用任何上下文从任何软件系统解耦任何策略。
570 0
|
消息中间件 存储 NoSQL
Kratos微服务框架下实现分布式任务队列
提起分布式任务队列(Distributed Task Queue),就不得不提Python的Celery。而Asynq和Machinery就是GO当中类似于Celery的分布式任务队列。
2261 0
Kratos微服务框架下实现分布式任务队列