- 博客(20)
- 收藏
- 关注
原创 Druid10-ZK动态配置数据源
1、ZooKeeper 注册数据源 通过创建 ZooKeeper 的临时节点,以此实现节点发现和下线,实现动态变更数据源信息,使用案例。 private void register() { //创建注册对象 ZookeeperNodeRegister register1 = new ZookeeperNodeRegister(); register1.setZkConnectString("127.0.0.1:2181"); reg
2022-05-20 21:23:09 598
原创 Druid09-选择器
1、选择器实例化 HighAvailableDataSource 通过选择器进行切换数据源,使用枚举维护了选择器,并且封装了反射实例化选择器。 public static DataSourceSelector getSelector(String name, HighAvailableDataSource dataSource) { for (DataSourceSelectorEnum e : DataSourceSelectorEnum.values()) {
2022-05-19 18:14:23 264
原创 Druid08-高可用数据源
1、初始化 HighAvailableDataSource 数据源的初始化,通过Double Check避免重复初始化。 public void init() { if (inited) { return; } synchronized (this) { if (inited) { return; } //dataSour
2022-05-18 19:47:34 260
原创 Druid07-高可用案例
1、简介 当系统并发越来高时数据库服务器的压力也是越来越大,最终成为性能的瓶颈,可以采用缓存、读写分离、分库分表等技术来降低服务器压力,Druid 提供了高可用数据源 ( HighAvailableDataSource ) 是基于Druid数据源之上进行了二次封装,通过名称选择数据源的高可用数据源配置。 @Bean(name = "masterDataSource", initMethod = "init", destroyMethod = "close") public DataSourc
2022-05-17 20:35:14 520
原创 Druid06-SQL执行
1、连接对象的封装 如果没有配置Filter 则生成具体的连接对象返回,否则将Connection对象包装成 ConnectionProxyImpl。 public Connection createPhysicalConnection(String url, Properties info) throws SQLException { Connection conn; if (getProxyFilters().isEmpty()) {
2022-05-16 21:29:47 1393
原创 Druid05-连接关闭
1、连接关闭 连接对象通过DruidPooledConnection 进行了包装,获取连接后都会进行连接的关闭或回收,如使用了类似 Mybatis、JPA 等开源框架通常会调用close方法,连接对象 DruidPooledConnection 重写了close()方法。public void close() throws SQLException { //已关闭状态 if (this.disable) { return; } DruidConnecti
2022-05-14 16:14:28 3654
原创 Druid04-获取连接
1、获取连接 获取连接的时候也会先去检查一下连接池是否已经初始化,如果没有初始化则先进行初始化。 public DruidPooledConnection getConnection(long maxWaitMillis) throws SQLException { //maxWaitMillis 从连接池获取连接最大等待时间(默认-1 一直等待) init(); if (filters.size() > 0) {
2022-05-13 14:05:55 1147
原创 Druid03-守护线程
1、CreateConnectionThread 线程1.1 线程创建 Druid连接池运行后,该线程大部分情况下都处于WAITING状态,通过 jstack -l PID 查看。protected void createAndStartCreatorThread() { if (createScheduler == null) { String threadName = "Druid-ConnectionPool-Create-" + System.identityHash
2022-05-12 20:56:32 340
原创 Druid02-初始化
1、初始化 Druid的初始化过程,使用都是创建DruidDataSource对象进行配置参数之后,调用init方法进行初始化。 方式一:Spring 配置初始化方法 @Bean(name = "dataSource", initMethod = "init", destroyMethod = "close") @Primary public DataSource dataSource() { DruidDataSource dataSource = new DruidD
2022-05-11 19:15:27 1034
原创 Druid01-简介
1、简介JAVA常用的连接池有dbcp、c3p0、tomcat-jdbc、druid和HiKariCP。dbcp、c3p0、tomcat-jdbc是第一代连接池,druid和HiKariCP是第二代连接池, 第一代连接池一般采用单线程同步的架构设计,第二代采用多线程异步架构,目前的大部分工程会使用Druid或HiKariCP。2、连接池 数据库连接池基于池化思想,实现了对连接资源灵活的管控。如果每次操作都需要 打开连接,操作,关闭连接,那么创建和销毁 会消耗大量的系统资源。可以通过复用创建好的连接池
2022-05-10 14:50:25 351
原创 RSA加解密
RSA加解密可用于微信小程序支付可用于微信小程序支付@Slf4jpublic class RSAUtil { private static final String ENCODING = "UTF-8"; private static final String SIGNATURE_ALGORITHM = "SHA256withRSA"; public static String sign256(String data, PrivateKey privateKey) throw
2021-08-19 11:14:04 162
原创 Soul网关源码学习07
Soul网关源码学习07文章目录Soul网关源码学习07ZookeeperZAB协议选举机制Soul数据同步Zookeeperzookeezper 是一个分布式数据一致性的解决方案,基于它可以实现如数据发布/订阅、分布式协调、集群管理、分布式锁、分布式队列等功能,数据模型=文件系统+通知机制。实现了类似文件系统的树结构,每个节点被称为znode。znode可看做是文件系统的中文件夹+文件。说它是文件夹,因为它下面可以放子节点;说它是文件,因为它本身存储了数据。ZAB协议ZAB协议是为zookeez
2021-01-22 01:45:29 112
原创 Soul网关源码学习06
Soul网关源码学习06文章目录Soul网关源码学习06Soul插件SoulConfigurationSoulPluginSoulWebHandlerSoul插件在soul网关中每个请求,都会通过责任链的方式执行相匹配的插件,所以插件也是soul网关的核心,soul网关的插件是可插拔的,并且是插件之间依赖关系是松耦合且插件的功能实现高聚合,其次用户可根据需求定制插件满足自己的需求。SoulConfigurationsoul插件配置类,使用 spring.factories 加载该配置。@Bean
2021-01-21 01:10:40 166 5
原创 Soul网关源码学习05
Soul网关源码学习05文章目录Soul网关源码学习05soul-web 处理流程ChannelOperationsHandlersoul-web 处理流程soul-web基于webflux 可以使用Netty作为应用服务器,Netty是事件驱动的,事件分为两大类 inboud 和 outbound,分别由ChannelInboundHandler 和ChannelOutboundHandler 负责处理,inbound和outbound 是指事件类型。Inbound:事件是由外部触发的,可以认为并
2021-01-20 01:16:19 221 2
原创 Soul网关源码学习04
Soul网关源码学习04文章目录Soul网关源码学习04soul-client 数据同步SoulSpringMvcClientSoulSpringMvcClientConfigurationSpringMvcClientBeanPostProcessorsoul-client 数据同步soul-client 将元数据进行同步到soul-admin,支持dubbo、springMVC、springCloud、sofa等协议。SoulSpringMvcClient@SoulSpringMvcClien
2021-01-19 02:20:22 151
原创 Soul网关源码学习03
Soul网关源码学习03文章目录Soul网关源码学习03soul-admin数据同步DataSyncConfigurationWebsocketCollectorDataChangedEventDispatchersoul-admin数据同步soul-admin 使用 websocket 的方式实现数据同步,会保存与客户端的 session 信息在集合中,数据的更新以广播的方式进行通知。DataSyncConfiguration数据同步的方式,支持多种的配置,先看配置 websocket 的方式。
2021-01-17 02:25:20 158 1
原创 Soul网关源码学习02
Soul网关源码学习02文章目录Soul网关源码学习02数据同步websocket 同步soul-web 客户端数据同步soul网关中路由规则、插件管理、负载均衡策略、限流熔断等配置,都是支持动态变更,数据的同步做到秒级同步。配置变更导致数据的同步支持 websocket、http、zookeeper、nacos 等多种方式,实现soul-admin和soul-web的数据同步。websocket 同步soul-web 启动时与 soul-admin 建立 websocket 连接,之后soul-
2021-01-16 02:57:13 276 1
原创 Soul网关源码学习01
Soul网关源码学习01文章目录Soul网关源码学习01简介准备工作简单测试简介Soul经过不断迭代已经成为高性能、响应式、可扩展的网关一整套解决方案;它参考了Kong、Spring-Cloud-Gateway等优秀的网关,并在此基础上聚合了一系列微服务领域的企业级功能。支持各种语言(http协议),支持 Dubbo,SpringCloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量筛选,能满足各种流量控制。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。流量配
2021-01-15 02:07:24 205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人