微服务
文章平均质量分 82
深入底层
小相公爱玩
努力,有个性。
展开
-
十四、gateway网关执行流程源码分析
GatewayAutoConfiguration自动配置类,注册相关组件和netty配置。netty处理请求到DiapatcherHandler。@Configuration(proxyBeanMethods = false)@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMissing = true)@EnableConfigurationProperties@AutoConfigureBefore({ H原创 2022-04-25 16:15:55 · 834 阅读 · 0 评论 -
十三、Seata分布式事务源码解析
一、自动配置类SeataAutoConfigurationSeataAutoConfiguration 自动配置类,注册GlobalTransactionScanner组件。@Bean@DependsOn({BEAN_NAME_SPRING_APPLICATION_CONTEXT_PROVIDER, BEAN_NAME_FAILURE_HANDLER})@ConditionalOnMissingBean(GlobalTransactionScanner.class)public GlobalTra原创 2022-04-24 18:22:43 · 890 阅读 · 1 评论 -
十二、sentinel持久化到Nacos-push模式
一、实现 实现Sentinel持久化到nacos,切断sentinel_dashboard到客户端的通信,直接和nacos通信;客户端和nacos通信,nacos负责将变化的规则通知到客户端内存。流程图:二、客户端集成1、导入依赖 <!--sentinel持久化 --> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasour原创 2022-04-20 18:01:06 · 1310 阅读 · 0 评论 -
十一、sentinel持久化到文件-pull模式
一、组件开发思路: sentinel官方给我们提供了很多组件的持久化demo,借鉴官方demo,我们来将sentinel-dashboard的配置持久化到文件中。前面看过dashboard的配置提交到后端会先保存内存,推送规则到客户端,客户端保存到内存后,如果有WritableDataSource,则会调用write方法。正好官方提供了文件的WritableDataSource类:FileWritableDataSource,有了它我们可以将配置写到文件中。那么文件变更我们如何感知,更新配置?原创 2022-04-20 10:55:34 · 960 阅读 · 3 评论 -
十、sentinel-dashboard规则推送到客户端源码分析
1、snetinel-dashboard如何将配置推送到我们的微服务内存?以dashboard新增流控规则为例,看下代码,会调用/v1/flow/rule POST方法。@PostMapping("/rule")@AuthAction(PrivilegeType.WRITE_RULE)public Result<FlowRuleEntity> apiAddFlowRule(@RequestBody FlowRuleEntity entity) { Result<FlowRuleE原创 2022-04-19 15:43:10 · 618 阅读 · 0 评论 -
九、sentinel处理链核心源码分析(二)
chain.entry方法去依次执行chain上的slot public void entry(Context context, ResourceWrapper resourceWrapper, Object t, int count, boolean prioritized, Object... args) throws Throwable { //调用first的transformEntry first.transformEntry(context, resourceWrapper, t, co原创 2022-04-02 19:35:35 · 482 阅读 · 0 评论 -
八、sentinel处理链核心源码分析(一)
一、@SentinelResource源码分析入口在spring-cloud-starter-alibaba-sentinel的jar包,META-INF/spring.factories里的自动配置类:SentinelAutoConfigurationSentinelAutoConfiguration注册一个SentinelResourceAspect切面,拦截@SentinelResource注解。@Configuration(proxyBeanMethods = false)@Conditio原创 2022-04-02 12:16:30 · 721 阅读 · 0 评论 -
七、Feign源码分析
一、准备@EnableFeignClients注解开启feign@SpringBootApplication@EnableFeignClients//@RibbonClients 注意 配置类不能写在@SpringbootApplication注解的@CompentScan扫描得到的地方/*@RibbonClients( value = { @RibbonClient(name = "order-server",configuration = RuleConfig.class) }原创 2022-03-22 19:52:54 · 1263 阅读 · 0 评论 -
六、Ribbon负载均衡器源码分析
六、ribbon源码一、准备工作使用RestTemplate访问其他微服务的接口,可以直接访问具体的地址,但是如果服务部署多台机器,就不能写死地址和端口,当然也可以使用nginx做负载均衡。我们微服务间最好的就是ribbon,这个组件可以做到服务名到服务具体地址的映射,也支持多种负载均衡规则。测试代码:controller方法:@RestController@RequestMapping("user")public class UserController { @Autowired原创 2022-03-22 12:34:31 · 327 阅读 · 0 评论 -
五、Nacos服务注册源码分析
一、准备工作在我们的微服务里,引入依赖,用于服务注册和发现<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>在配置文件中指定注册中心地址spring: application: name: user原创 2022-03-21 16:49:22 · 625 阅读 · 0 评论 -
四、Spring Boot自动装配及启动流程源码分析
一、Spring Boot自动装配源码分析首先主启动类上写上@SpringBootApplication。@SpringBootApplicationpublic class SpringSourceApplication { public static void main(String[] args) { SpringApplication.run(SpringSourceApplication.class, args); }}这个注解做了什么?@Target(ElementTy原创 2022-03-15 09:10:02 · 475 阅读 · 0 评论 -
一、深入理解SPI机制及源码分析
一、SPI机制理解SPI 全称为 Service Provider Interface 是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。实现步骤:1、在ClassPath路径下的META-INF/services文件夹下创建文件2、文件名为接口服务的全限定名,文件内容是多个实现类3、API加载实现类。二、Java SPI 案例1、编写接口服务public interface SPIService {原创 2022-03-03 09:11:04 · 1123 阅读 · 0 评论