随笔分类 - Microservice
通过各种组件实现微服务架构
微服务-全链路灰度/流量控制
摘要:前言 在传统的单体应用架构中,灰度发布相对简单。只需要在服务的网关侧即流量入口处进行分流即可实现。 然而,微服务架构引入了新的复杂性,服务之间的依赖关系错综复杂。 有时候,某个功能的发布可能依赖于多个服务,要求灰度流量在整个调用链中准确路由到灰度版本的服务。 传统的单个服务流量入口设置分流的做法无法
阅读全文
微服务之统一定时任务调度中心(xxl-job)
摘要:前言 在分布式架构中项目部署在多台不同的服务器上,每台服务器都有自己的crontab任务很容易造成任务执行冲突且不易于定时任务的统一管理; 此时微服务中就需要1个定时任务任务调度中心,对微服务架构中每1台服务器里的定时任务,进行集中管理,统一定时任务的执行频率; 一、xxl-job简介 xxl-jo
阅读全文
微服务之分布式事务解决方案(Seata)
摘要:前言 在分布式的微服务架构中,鉴于服务单一职责性,各个微服务都分布在不同的服务器节点,且每1个微服务是独立的; 在后端每个微服务都是分散和独立的,可能使用不同编程语言,使用不同的数据库,通过RPC调用完成前端用户发送的请求(任务); 假设1个用户在1个分布式微服务架构的电商网站购物,购买了1件商品点
阅读全文
微服务之微服务保护(Sentinal)
摘要:前言 Sentinel 是面向分布式服务架构的高可用微服务防护组件; Sentinal可以从超时处理、仓壁模式、断路器、限流几个维度来保护微服务架构稳定运行; 一、服务雪崩 在微服务架构中,服务间调用关系错综复杂,因为调用链中的1个服务故障,引起整个链路都无法访问的情况。 二、服务雪崩解决方案 解决
阅读全文
微服务之异步远程调用(RabbitMQ)
摘要:前言 我们可以使用SpringCloud框架中Feign组完成微服务之间的远程调用; 但是Feign组件底层基于HTTP协议,HTTP协议的特点是请求同步,而且既需要请求也需要响应,属于同步远程调用; 微服务架构在同步远程调用的场景下,如果服务提供者一直没有响应服务消费者,很容易造成服务雪崩; 如果
阅读全文
微服务之服务网关(Gateway)
摘要:前言 在微服务架构中,1个系统会被拆分为了很多个微服务。 如果每1个微服务都直接对外暴露出来,让用户直接访问这些微服务,会出现以下问题; 客户端会多次请求不同的微服务,需要在客户端实现负载均衡,增加了客户端的复杂性。 跨域请求复杂,客户端需要兼容不同微服务后端跨域方案。 客户端身份认证复杂,每个微服
阅读全文
微服务之同步远程调用(Feign)
摘要:前言 1.为什么需要RPC框架? 微服务的服务提供者和服务消费者解耦合之后,虽然可以借助restTemplate这样的HTTP客户端,向微服务的服务提供者发起远程调用; 但是这样的代码有2大缺陷: 代码可读性差,编程体验不统一 当URL参数复杂时难以维护 //使用RestTemplate发起远程调用
阅读全文
微服务之配置管理中心(Nacos)
摘要:前言 在当微服务架构中,当实例越来越多,达到数十、数百时,去逐个修改每1个微服务的配置就会让人抓狂,而且很容易出错。 这时我们就需要1个可以集中保存微服务配置的配置中心; 一、配置中心概念 我们可以提取每1个微服务架构中实例的经常变化的配置项,集中保存到1个配置中心里; 当需要修改配置时直接在配置中
阅读全文
微服务之服务注册中心(Nacos)
摘要:前言 微服务是一种拆分之后分而治之和分而动态强化之的思想; 把一股防御力量拆分为海、陆、空军; 在战时可以在敌人侵犯海域时强化海军力量, 可以在遇到空袭时强化空军力量, 可以在在敌人登陆时强化陆军力量,以对来犯之敌; 在和平时期还可以进行针对性管理; 为什么要将1个整体的应用程序,拆分成1堆无法再继
阅读全文