微服务
文章平均质量分 86
微服务学习记录
码畜c
这个作者很懒,什么都没留下…
展开
-
SpringCloudAlibaba - Seata (2) AT 模式源码分析
seata AT 模式的业务零侵入性,依靠的就是自动装配 starter 包。原创 2023-08-30 14:51:51 · 167 阅读 · 0 评论 -
SpringCloudAlibaba - Seata (1) 各模式详解、微服务集成、集群搭建
需要说一下,即使上面的案例处理了很多特殊情况,但还是存在一个没有处理的问题:若 try 方法业务逻辑执行完成但在数据库事务提交前超时,seata 触发了 cancel 执行请求,那么最终就会发生业务悬挂的情况,所以需要加一个互斥锁。分布式事务最大的问题是各个子事务的一致性问题,如上图所示:若库存服务扣减失败后,应该将账户服务与订单服务中的数据库操作进行回滚,这样才能达成数据的一致性。store 节点指的是 TC 在工作期间存储协调数据的配置,支持的方式也有很多,我们使用 mysql 数据库的方式进行存储。原创 2023-08-30 14:50:09 · 409 阅读 · 0 评论 -
SpringCloud - Gateway (2) 应用案例 - 根据当前运行环境访问不同环境的服务实例
当本地开发环境进行代码调试时,优先获取本地环境中的服务节点,若本地没有运行该服务,则调用测试环境中的该服务。这样可以便利我们进行代码自测,只需要将需要测试的服务在本地启动,其余的服务依旧调用测试环境。:根据当前运行时环境,调用不同环境的服务实例,实现环境的隔离。比如本地开发环境,服务间调用时,只会调用本地环境中的服务,而不是调用测试环境中的服务。最后在总结一下:根据当前的 active.profile 过滤不同 ip 的服务实例。,实现逻辑已经在代码注释中写的很清楚了。原创 2023-08-07 14:36:31 · 270 阅读 · 0 评论 -
SpringCloud - Gateway (1) 集成与配置详解
在创建自定义工厂前,先介绍一下快捷配置。就是一个快捷配置。其中,Path 会被拼接后在 IOC 容器中寻找对应的断言工厂 Bean 进行断言 Bean 的注册。每次请求进入后,就会执行该断言。其次,会作为配置值注入到中,辅助进行断言。必须是一个 Spring Bean必须以 RoutePredicateFactory 作为类名后缀继承 AbstractRoutePredicateFactory设置配置类,声明配置属性接收配置文件中对应的断言信息重写断言方法逻辑。原创 2023-08-06 02:18:16 · 1286 阅读 · 0 评论 -
SpringCloudAlibaba - Sentinel (2) 集成与配置详解
Sentinel 组件生效于每个微服务节点,每个服务节点都可以对节点中某些资源进行防护配置。Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。也就是说,Sentinel 配置有两种方式:一种是基于核心库进行代码的配置,一种是基于管控台的配置。基于管控台的配置都会通过网络通信同步到服务节点,服务节点在通过核心库修改节点在内存中对应资源的防护配置。也就是说,管控台将配置的操作进行了可视配置化。原创 2023-07-24 16:20:08 · 765 阅读 · 0 评论 -
SpringCloudAlibaba - Sentinel (1) 基础概念
官方文档。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 是 Spring Cloud Alibaba 的一个重要组件,同类组件有 Spring Clound 的 Hystrix。与 Hystrix-Dashboard 控制台一样,Sentinel-Dashboard 控制台也可以提供对流量的实时监控、在线维护流量规则、熔断规则等。原创 2023-07-24 16:19:26 · 45 阅读 · 0 评论 -
SpringCloud - RPC (3) 集成 OpenFeign
Feign 是 Netflix 开发的基于 Ribbon 的声明式、模板化 HTTP 客户端。而 openfeign 则是 Spring 官方 对 Feign 的增强,使其能够支持 SpringMVC 的注解。feign 最大的特点在于通过 feign 调用其他服务的接口,就像调用本地方法一样。原创 2023-07-07 11:54:01 · 316 阅读 · 0 评论 -
SpringCloud - RPC (2) 集成 Ribbon 与 SpringCloudLoadBalancer
传递不同 service-name,根据响应信息中输出的端口号即可测试是轮询访问还是随机访问了。,传递不同 service-name,根据响应信息中输出的端口号即可测试是轮询访问还是随机访问了。ribbon 包下都是关于 Ribbon 的配置与测试代码。项目中新增一个服务,端口为。原创 2023-07-07 11:53:43 · 133 阅读 · 0 评论 -
SpringCloud - RPC (1) 基础概念
SpringCloud 集成的 RPC 通信组件底层一般都是采用的 HTTP 协议。ribbon:netflix 开源,目前已停止维护。在 Spring 官方推出自己的负载均衡组件之前,一直集成的 ribbonload-balancer:Spring 官方推出的用于替代 Ribbonopenfeign:基于 netflix 开源但停止维护的 feign(netflix feign 又基于 Ribbon)进行了增强,使得支持 SpringMVC 的一些注解功能,进行远程调用就如在调用本地方法一样。原创 2023-07-07 11:55:37 · 814 阅读 · 0 评论 -
SpringCloudAlibaba - Nacos (2) 集群搭建
对比 1.x 版本,2.x 做了许多优化与调整。底层Nacos Client(业务服务节点)与Nacos Server(Nacos 节点)或 Nacos Server 与 Nacos Server 间的通信方式不仅仅在支持 HTTP,新增了 gRPC 通信方式。因为使用了 gRPC 通信的方式,默认的 Nacos Server 节点启动时会占用更多的端口(摘自官网):端口与主端口的偏移量描述88480主端口,客户端、控制台及OpenAPI所使用的HTTP端口98481000。原创 2023-07-03 16:57:21 · 526 阅读 · 0 评论 -
SpringCloudAlibaba - Nacos (1) 服务治理
最终的效果是将不同用户绑定到不同角色,不同角色可以操作不同命名空间,并对命名空间进行不同的操作(r / w / rw)。下面我们接入一下 Nacos,将我们自己的服务:goods-service、order-service 注册到 Nacos 中,并可用通过管控台进行查看。里面描述着服务的各种信息字段,注意右下角的下线按钮,触发后会修改服务注册表中该服务节点的状态,意味着其他服务无法在访问该节点。会发现新增了一条数据,服务节点的端口为 9201,正是我们新启动的订单服务。版本的 Nacos 进行学习。原创 2023-07-03 16:54:07 · 371 阅读 · 0 评论 -
SpringCloudAlibaba - Nacos (3) 服务配置 (配置中心)
比如共享配置文件,可以为 mysql、redis、rocketMQ 等等其他数据库或中间件的配置文件。扩展配置文件,可以为具体类别项目的扩展配置,可以将一些业务上的配置放到该类配置文件中。作用:当 Nacos 管控台修改配置文件的配置时,立即刷新 Bean 实例中通过 @Value 注解注入的配置属性值。的某些配置的优先级高于 Nacos Server 远端配置文件中的相同配置项,即最终以本地的配置为主,该如何配置呢?因为在引入延展、共享配置文件的配置项中,不存在主配置文件中的配置项。原创 2023-07-03 16:58:09 · 299 阅读 · 0 评论 -
SpringCloudAlibaba 微服务体系学习开篇
系统学习 SpringCloudAlibaba 微服务体系中的各个组件,以及其他开源组件。后面会持续更新各个组件的用法与配置。相关代码都会编写在学习项目中。原创 2023-06-26 17:00:51 · 59 阅读 · 0 评论 -
CAP、BASE 理论
CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。C:consistency,一致性。等同于所有节点访问同一份最新的数据副本。A:availability,可用性。原创 2023-06-26 15:51:35 · 77 阅读 · 0 评论