12 2020 档案

摘要:org.apache.dubbo.registry.integration.RegistryProtocol#export 服务在本地发布完成,那么接下去要进入服务的注册阶段: final Registry registry = getRegistry(originInvoker); final U 阅读全文
posted @ 2020-12-30 12:28 snail灬 阅读(216) 评论(0) 推荐(0) 编辑
摘要:通过上面的分析,我们知道了服务得发布入口在 DubboBootstrap#start: public DubboBootstrap start() { // 原子操作,避免并发问题 if (started.compareAndSet(false, true)) { ready.set(false); 阅读全文
posted @ 2020-12-29 02:06 snail灬 阅读(100) 评论(0) 推荐(0) 编辑
摘要:服务发布注册的入口(@DubboComponentScan) @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(DubboComponentScanRegistrar.class) pu 阅读全文
posted @ 2020-12-27 02:08 snail灬 阅读(203) 评论(0) 推荐(0) 编辑
摘要:Dubbo的拓展点 在 Dubbo 中,拓展点分为以下三类: 指定名称的扩展点:ExtensionLoader.getExtensionLoader(Protocol.class).getExtension("name")。 自适应扩展点:ExtensionLoader.getExtensionLo 阅读全文
posted @ 2020-12-21 01:09 snail灬 阅读(233) 评论(0) 推荐(0) 编辑
摘要:Dubbo扩展点加载的功能 Dubbo的扩展点加载机制类似于Java的SPI,我们知道Java的SPI在使用的时候,只能通过遍历来进行实现的查找和实例化,有可能会一次性把所有的实现都实例化,这样会造成有些不使用的扩展实现也会被实例化,这就会造成一定的资源浪费。有关Dubbo的改进,参照文档上的说明: 阅读全文
posted @ 2020-12-21 01:06 snail灬 阅读(179) 评论(0) 推荐(0) 编辑
摘要:什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制 阅读全文
posted @ 2020-12-21 00:19 snail灬 阅读(382) 评论(0) 推荐(0) 编辑
摘要:Dubbo2.7新特性主要三点(dubbo版本2.7.3): 异步化改造 三大中心改造 服务治理增强 异步化改造 Dubbo的四种调用方式: oneway 一次调用,不需要返回,客户端线程请求发出即结束,立刻释放线程资源。 sync 同步调用,客户端线程发送请求后,会阻塞,等到服务端返回后,才会重新 阅读全文
posted @ 2020-12-19 02:34 snail灬 阅读(241) 评论(0) 推荐(0) 编辑
摘要:Dubbo泛化 我们每次去发布一个服务,必然会先定义一个接口,并且把这个接口放在一个api的jar包中,给到服务调用方来使用。本质上,对于开发者来说仍然是面向接口编程,而且对于使用者来说,可以不需要关心甚至不需要知道这个接口到底是怎么触发调用的。简而言之,泛化调用,最最直接的表现就是服务消费者不需要 阅读全文
posted @ 2020-12-19 01:56 snail灬 阅读(527) 评论(0) 推荐(0) 编辑
摘要:1.dubbo 协议 (默认) 1、采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况 2、不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。 用场景:常规远程服务方法调用 特性 连接个数:单连接 连接方式:长连接 传输协议 阅读全文
posted @ 2020-12-18 18:11 snail灬 阅读(332) 评论(0) 推荐(0) 编辑
摘要:部署 MySQL 8.0 集群 master & slave(仅测试用) 镜像版本 mysql:8.0 1、创建 overlay 网络 docker network create --driver overlay common-network --attachable 2、启动 2 个 MYSQL: 阅读全文
posted @ 2020-12-18 15:21 snail灬 阅读(512) 评论(0) 推荐(0) 编辑
摘要:Dubbo 出生于阿里系,是阿里巴巴服务化治理的核心框架,并被广泛应用于中国各互联网公司;只需要通过 Spring 配置的方式即可完成服务化,对于应用无入侵,设计的目的还是服务于自身的业务为主。 微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务 阅读全文
posted @ 2020-12-17 13:42 snail灬 阅读(3946) 评论(0) 推荐(0) 编辑
摘要:使用dubbo的原因 服务治理框架 服务的监控 服务的注册发现 服务的通信 服务的容错 服务的负载均衡 配置dubbo提供方信息 #dubbo 服务扫描基础包路径 dubbo.scan.base-packages=com.dubbo.provider dubbo.protocol.id=dubbo 阅读全文
posted @ 2020-12-17 13:26 snail灬 阅读(445) 评论(0) 推荐(0) 编辑
摘要:组成结构图 代码实现(基于上图) public class SnowFlakeGenerator { private long roomId; //机房id private long workerId; //机器id private long roomIdBit = 5l; //占用5个bit位 p 阅读全文
posted @ 2020-12-16 01:02 snail灬 阅读(274) 评论(0) 推荐(0) 编辑
摘要:背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够 阅读全文
posted @ 2020-12-16 00:16 snail灬 阅读(352) 评论(0) 推荐(0) 编辑
摘要:全局ID的实现方式 UUID,32个字符, 4个横线 8 - 4-4-4- 12 UUID.randomUUID.toString(); 基于时间的UUID(time & MAC) UUID(time&POSIX UID或GID) 随机数的UUID UUID(SHA1) 数据库 create tab 阅读全文
posted @ 2020-12-15 20:41 snail灬 阅读(126) 评论(0) 推荐(0) 编辑
摘要:JWT token的组成 JWT token由三个部分组成,头部(header)、有效载荷(payload)、签名(signature), 官网: https://jwt.io/ head header部分由 typ 和 alg 组成,typ的全称是(type,类型)、alg全称(algorithm 阅读全文
posted @ 2020-12-15 20:30 snail灬 阅读(3822) 评论(0) 推荐(2) 编辑
摘要:微服务架构下的统一授权 识别客户端的身份,并且能够保存这个身份的状态 HTTP协议无状态协议: 浏览器的Cookie(disk / mem),客户端的状态存储 服务器端的session(服务端的状态存储) 集群模式下的会话丢失 Session Sticky IPHASH |hash(ip)|%目标服 阅读全文
posted @ 2020-12-15 20:11 snail灬 阅读(955) 评论(0) 推荐(0) 编辑
摘要:链路跟踪slueth -服务器的监控(cpu、内存、磁盘) 应用的监控 () 链路监控的开源技术 Zipkin Pinpoint skywalking spring cloud slueth slueth生成链路跟踪的数据,然后把数据上报到Zipkin 。 。。。未完待续 阅读全文
posted @ 2020-12-15 19:59 snail灬 阅读(575) 评论(0) 推荐(0) 编辑
摘要:Spring Cloud Gateway的核心概念 Route 路由,它是网关的基础元素,包含ID、目标URI、断言、过滤器组成,当前请求到达网关时,会通过Gateway Handler Mapping,基于断言进行路由匹配,当断言为true时,匹配到路由进行转发 Predicate,断言,它可以允 阅读全文
posted @ 2020-12-15 16:17 snail灬 阅读(476) 评论(0) 推荐(0) 编辑
摘要:网关的由来 在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独立运行的微服务组成。其中每个服务都只会完成特定领域的功能,比如订单服务提供与订单业务场景有关的功能、商品服务提供商品展示功能等。各个微服务之间通过轻量级通信机制 REST API 或者 RPC 完成 阅读全文
posted @ 2020-12-15 13:54 snail灬 阅读(312) 评论(0) 推荐(0) 编辑
摘要:创建MyHystrixCommand @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyHystrixCommand { /** * 默认超时时间 * @re 阅读全文
posted @ 2020-12-15 11:37 snail灬 阅读(257) 评论(0) 推荐(0) 编辑
摘要:executeCommandAndObserve 定义不同的回调,doOnNext、doOnCompleted、onErrorResumeNext、doOnEach。 调用executeCommandWithSpecifiedIsolation获得执行命令的Observable 若执行命令超时特性开 阅读全文
posted @ 2020-12-15 11:34 snail灬 阅读(173) 评论(0) 推荐(0) 编辑
摘要:Hystrix的核心原理 针对类级别的配置(自定义) 可配置化的降级策略: 信号量/线程 / 超时(1s)、熔断(错误率) HystrixCommandProperty 可以识别的降级边界: @HystrixCommand(Spring AOP) HystrixCommand 抽象类 数据采集: 如 阅读全文
posted @ 2020-12-15 01:49 snail灬 阅读(226) 评论(0) 推荐(0) 编辑
摘要:熔断的目的是为了起到保护作用(熔断是一种降级策略) 降级 主动降级,促销的时候关闭非核心服务. 被动降级, 熔断降级、限流降级 Hystrix中的三种降级方案 熔断触发降级 @HystrixCommand(commandProperties = { @HystrixProperty(name="ci 阅读全文
posted @ 2020-12-14 19:37 snail灬 阅读(249) 评论(0) 推荐(0) 编辑
摘要:服务发现 我们继续来研究服务的发现过程,就是客户端需要能够满足两个功能 在启动的时候获取指定服务提供者的地址列表 Eureka server端地址发生变化时,需要动态感知 DiscoveryClient构造时进行查询 DiscoveryClient(ApplicationInfoManager ap 阅读全文
posted @ 2020-12-14 13:08 snail灬 阅读(322) 评论(0) 推荐(0) 编辑
摘要:多级缓存设计 Eureka Server存在三个变量:(registry、readWriteCacheMap、readOnlyCacheMap)保存服务注册信息,默认情况下定时任务每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s清理超过90s未续约的节点, 阅读全文
posted @ 2020-12-14 11:55 snail灬 阅读(125) 评论(0) 推荐(0) 编辑
摘要:Eureka Server收到请求之后的处理 Eureka Server端如何对请求过来的服务实例数据进行了存储的? 请求入口在: com.netflix.eureka.resources.ApplicationResource.addInstance() 。 这里可以发现,这里所提供的REST服务 阅读全文
posted @ 2020-12-14 11:13 snail灬 阅读(138) 评论(0) 推荐(0) 编辑
摘要:服务注册触发路径 这个动作在spring boot的启动方法中的refreshContext中完成 SpringApplication.run() -> this.refreshContext(context); -> this.refresh(context); -> ServletWebServ 阅读全文
posted @ 2020-12-14 01:31 snail灬 阅读(172) 评论(0) 推荐(0) 编辑
摘要:Eureka源码架构图 Eureka的自我保护机制的原理 Eureka Server在运行期间会去统计心跳失败的比例在15分钟之内是否低于85% , 如果低于85%,Eureka Server会认为当前实例的客户端与自己的心跳连接出现了网络故障,那么Eureka Server会把这些实例保护起来,让 阅读全文
posted @ 2020-12-10 23:16 snail灬 阅读(228) 评论(0) 推荐(0) 编辑
摘要:OpenFegin源码解析图 ① BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(FeignClientFactoryBean.class); Spring Cloud FengnClien 阅读全文
posted @ 2020-12-07 11:41 snail灬 阅读(130) 评论(0) 推荐(0) 编辑
摘要:FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar,它是一个动态注入bean的接口,Spring Boot启动的时候,会去调用这个类中的registerBeanDefinitions来实现动态Bean的装载。 它的作用类似于ImportSele 阅读全文
posted @ 2020-12-07 11:03 snail灬 阅读(304) 评论(0) 推荐(0) 编辑
摘要:![](https://img2020.cnblogs.com/blog/1841773/202012/1841773-20201201155405785-1007338058.png) ![](https://img2020.cnblogs.com/blog/1841773/202012/1841773-20201201155426850-1672305920.png) 阅读全文
posted @ 2020-12-01 15:52 snail灬 阅读(83) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示