所谓配置中心:将项目需要的配置信息保存在配置中心,需要读取时直接从配置中心读取,方便配置管理的微服务工具
我们可以将部分yml文件的内容保存在配置中心
一个微服务项目有很多子模块,这些子模块可能在不同的服务器上,如果有一些统一的修改,我们要逐一修改这些子模块的配置,由于它们是不同的服务器,所以修改起来很麻烦
如果将这些子模块的配置集中在一个服务器上,我们修改这个服务器的配置信息,就相当于修改了所有子模块的信息,这个服务器就是配置中心
使用配置中心的原因就是能够达到高效的修改各模块配置的目的
Nacos既可以做注册中心,也可以做配置中心
Nacos做配置中心,支持各种格式类型的配置文件
propertiesyaml(yml) xtjsonxml等
namespace:命名空间
group:分组
Service/DataId:具体数据
命名空间
namespace是Nacos提供的最大的数据结构
一个Nacos可以创建多个命名空间
一个命名空间能够包含多个group
每一个group中又可以包含多条配置信息
在nacos中创建命名空间
在上图连接的位置可以新增命名空间,填写命名空间名称和描述即可
Nacos有默认的命名空间public不能删除和修改
添加命名空间后,我们在Nacos中注册的服务或添加的配置就可以指定命名空间了
因为多个命名空间可以隔离项目,每个项目使用自己的命名空间,互不干扰
分组
一个命名空间中可以有多个分组,进行进一步分离
我们使用时,如果不需要进一步分组,推荐使用group名称:DEFAULT_GROUP
服务或配置
确定了命名空间和分组之后
我们就可以添加服务或配置了
之前我们启动的各种模块都是服务,之前都是默认保存在public命名空间中
下面我们主要使用配置中心的功能,在命名空间中添加配置
添加配置就是设置DataId
实际在Nacos中定位一个配置的结构为
Namespace>Group>DataId
Nacos首页->配置管理->配置列表->添加配置(右侧的大"+"号)
添加cart模块数据库连接配置
csmall-cart-webapi模块要读取连接数据库的配置
如果要读取配置中心的信心,首先要添加依赖
如果SpringBoot版本不是2.5.x,匹配的SpringCloud版本不是2020.x
可能添加的依赖不同,尤其是加载系统配置的依赖
需要根据实际的SpringBootSpringCloud版本来变化
像其他程序一样,在添加完依赖之后,还需要添加yml文件的配置
我们使用过application.properties和application.yml两种配置文件添加配置
实际上这两个配置文件加载是有顺序的
先加载yml
后加载properties
如果两个配置文件同时设置了同一个属性,后加载的覆盖掉先加载的
在SpringCloud环境下,我们添加了加载系统配置的依赖,当前项目就支持了额外一组配置文件
它们是bootstrap.yml和bootstrap.properties
这组配置文件实际开发时,主要配置系统内容,一般都是不轻易修改的
所以这组配置文件的加载时机,整体早于application.properties这一组
一个SpringCloud项目加载配置文件的顺序最终可能如下图
因为配置文件的特性,bootstrap这一组是加载系统配置的
所以我们读取配置中心的配置信息,最好添加在bootstrap.ymlproperties中
下面我们就在cart-webapi项目中resources文件夹中添加bootstarp.yml文件
我们现在项目中使用的RPC远程调用技术是Dubbo
实际上除了Dubbo技术之外,还有很多远程调用的方法
它们有些调用的思想都和Dubbo完全不同
Dubbo是SpringCloudAlibaba提供的功能强大的RPC框架
但是Dubbo功能也有限制,如果我们想调用的方法不是我们当前项目的组件或功能,甚至想调用的方法不是java编写的,那么Dubbo就无能为力了
我们可以使用RestTemplate来调用任何语言编写的公开的Rest路径
也就是只要能够使用浏览器访问的路径,我们都可以使用RestTemplate发送请求,接收响应
使用步骤如下
步骤1:
无需添加任何pom依赖和yml文件配置
只需在调用的发起方,也就是使用RestTemplate发起请求的项目配置文件中(指支持@Configuration注解的类或SpringBoot启动类),向Spring容器注入一个该类型对象
所有SpringBoot配置类都可以添加下面代码,我们选择SpringBoot启动类添加如下代码
在CartWebapi启动类中修改
步骤2:
我们配置了cart模块具备了调用其它控制器方法的功能
我们可以实现在cart模块运行删除购物车商品的同时减少库存
这样就要求我们stock模块具备一个能够减少库存的控制器方法,现在这个方法是有的url为:
/base/stock/reduce/count,但是这个控制器请求的方法是@PostMapping,RestTemplate只能直接get方法调用目标,所以我们将stock-webapi模块的StockController中减少库存方法的的注解修改为@GetMapping
步骤3:
回到cart-webapi模块
开始调用
我们可以在当前CartController控制器方法deleteUserCart中
添加RestTemplate的调用,实现库存的减少
步骤4:
发送测试
将相关的模块都启动
cartstock
调用cart模块删除购物车中的方法
运行后检查对应商品减少库存和购物车中数据的删除效果
如果一切正常证明调用成功了
简单来说
Web服务器就是一个能够接收http请求并作出响应的java程序
webServer项目(二阶段项目)就是一个我们手写的Web服务器
我们现在开发的标准SpringBoot项目启动时内置的Web服务器叫Tomcat
实际上我们业界中还有很多Web服务器,它们具备很多不同的特征
网关Gateway项目使用Netty服务器,Netty服务器内部是NIO的所以性能更好
下图以Tomcat为例,解释请求响应流程
大多数情况我们会使用Tomcat作为Web服务器
它是我们请求响应流程中的核心组件
Tomcat是也有缺点
常规情况下,一个tomcat并发数在100多一点
一般情况下,一个网站要1000人在线,并发数是2%~5% 也就是20~50并发
如果需要一个支持更高并发的服务器,就是需要使用Nginx
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
又小又快
Nginx快速的原因
Nginx内部是一个主进程(Master)多个工作进程(Worker)
Master负责统筹管理配置和Worker的分工
Worker来负责处理请求,作出响应
而且使用非阻塞式的,异步的
简单来说,就是一个Worker接到一个请求后,对请求进行处理,处理后在响应返回前,这个Worker还会处理别的请求,直到请求返回响应时,才会处理响应,也就是Worker这个进程全程无阻塞
要想了解反向代理,首先了解正向代理
正向代理,当我们访问的目标服务器无法连通时,可以借助代理服务器,间接访问该目标服务器
关系类似于生活中的介绍人
而反向代理的模式为下图
请求反向代理服务器的特点是,我们请求的是代理服务器的地址,真正提供服务的服务器地址我们不需要知道,这样做的好处是反向代理服务器后可能是一个集群,方便负载均衡
有点类似于生活中的代理人,有什么事情直接找这个人就能完成需求,它怎么完成的我们不用管
实际开发中,Nginx可以用于反向代理服务器,
实际处理请求的是Tomcat服务器
因为Nginx优秀的静态内容并发性能
我们常常使用它做静态资源服务器
在Nginx中保存图片,文件视频等静态资源
经常和FastDFS组合使用
Nginx和Gateway的区别
首先明确Nginx和Gateway并不冲突
他们都是统一入口的概念,它们可以同时开启
也可以开启其中一个
只不过Nginx不属于java程序,而Gateway是java程序
Nginx是服务器程序我们不可编辑,
Gateway是我们自己创建的项目,依赖和配置都由我们自己完成
最终如果想做反向代理服务器,就使用Nginx
如果是微服务项目的网关就是Gateway
SpringMvc拦截器是SpringMvc框架提供的功能
它可以在控制器方法运行之前或运行之后(还有其它特殊时机)对请求进行处理或加工的特定接口
这个拦截器的编写是典型的A(Aspect)OP思想的体现
在我们现有的控制器方法运行前后进行代码的维护和切面的通知
过滤器和拦截器的区别:
如果请求的目标能确定是一个控制器方法,优先使用拦截器
如果请求的目标可能是其他静态资源,那么就需要使用过滤器
拦截器工作流程图
在cart-webapi模块中创建一个包
包名建议叫interceptor
创建拦截器类DemoInterceptor
然后要配置拦截器的拦截目标
需要在spring配置类中编写
在config包中创建InterceptorConfig类
简介:
Mybatis框架提供的一个功能
能够在Mapper接口方法运行之前或之后添加额外代码的功能
之前我们通过设置,实现将运行的sql语句输出到控制台的效果,就是拦截器实现的
我们也可以简单的进行一个类似的演示
首先,要想能够成功的拦截Mybatis中mapper运行的sql语句
需要先在Spring中设置相关的代码
步骤1:编写拦截器
步骤2:
将拦截器设置在SpringBoot框架下使其生效
config包中MyBatisConfiguration添加代码
MybatisPlus
MybatisPlus是一个国内的团队在Mybatis框架基础上新增了一些功能的框架
MybatisPlus新增的功能主要两方面
1.提供的代码生成器
可以根据指定的数据库表,自动生成基本的实体类控制器业务层持久层的相关文件
2.自动提供基本增删改查方法的默认实现
Oauth2.0
是一个授权框架
类似一个授权协议标准
我们常用的扫码登录就是Oauth2标准下的功能
到此这篇配置中心有哪些(配置中心的主要作用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qkl-jr/23567.html