- 博客(29)
- 收藏
- 关注
原创 结构型模式-适配器模式
将类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作适配器模式的关键点就在于转换,而转换时要在已有的接口基础上做好兼容。
2023-06-05 15:15:58 109
原创 Zookeeper简介
zookeeper的基本概念Zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂的且容易出错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并以⼀些简单的接⼝提供给⽤户使⽤。 zookeeper是⼀个典型的分布式数据⼀致性的解决⽅案,分布式应⽤程序可以基于它实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能基本概念集群⻆⾊ 通常在分布式系统中,构成⼀个集群的每⼀台机器都有⾃⼰的⻆⾊,最典型的集群就是Mas...
2021-01-07 20:36:05 152
原创 Netty
目录一、Netty 概述二、线程模型1. 单线程模型2. 线程池模型3. Netty模型三、Netty核心组件ChannelHandler 及其实现类ChannelPipelineChannelHandlerContextChannelFutureEventLoopGroup 和其实现类 NioEventLoopGroupServerBootstrap 和 Bootstrap四、简单案例一、Netty 概述Netty 是由 JBOSS 提供一个异.
2021-01-05 01:56:48 190
原创 分布式架构网络通信-RPC|RMI|BIO|NIO|AIO
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、Hessian、SOAP、ESB和JMS等1.基本原理在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现 传输协议 UDP: 广播协议,面向无连接,速度快,不安全 TCP: 面向连接的协议,速度不快,较为安全 TCP、UDP都是在基于Socket概念上为某类应用场景而扩展出的传输协议 网...
2021-01-05 01:04:18 393
原创 Session一致性问题
Nginx的 IP_Hash 策略 同⼀个客户端IP的请求都会被路由到同⼀个⽬标服务器,也叫做会话粘滞在nginx的 niginx.conf 中 添加ip_hash Spring Session+ Redis的Session共享应⽤ 以SpringBoot中部署为例1. 编入依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artif...
2021-01-02 12:36:53 118
原创 分布式调试问题
分布时调试,即在分布式环境下定时任务的处理一、定时任务的场景 定时任务: 每隔一定时间/特定某一时间执行订单审核、出库 订单超时⾃动取消、⽀付退款 礼券同步、⽣成、发放作业 物流信息推送、抓取作业、退换货处理作业 数据积压监控、⽇志监控、服务可⽤性探测作业 定时备份数据 ⾦融系统每天的定时结算 数据归档、清理作业 报表、离线数据分析作业二、分布式调度 含义包含两层运行在分布式集群环境下的调试任务 (同一个定时任务,程序部署多份,同一时刻只有一个定时任务在执...
2020-12-29 01:56:43 681
原创 分布式ID解决方案
一、通过UUID来设置唯一IDjava.util.UUID.randomUUID().toString()二、独⽴数据库的⾃增ID(不推荐)⽐如A表分表为A1表和A2表,那么肯定不能让A1表和A2表的ID⾃增,那么ID怎么获取呢?我们可以单独的创建⼀个Mysql数据库,在这个数据库中创建⼀张表,这张表的ID设置为⾃增,其他地⽅需要全局唯⼀ID的时候,就模拟向这个Mysql数据库的这张表中模拟插⼊⼀条记录,此时ID会⾃增,然后我们可以通过Mysql的select last_insert_id()
2020-12-28 09:11:47 155
原创 集群时钟同步问题
一、集群时钟同步不一致问题示例并发的三个下单请求,⼏乎同时被处理,由于服务器时钟不⼀致,导致⼊库的下单时间却差别很⼤!数据混乱二、同步服务器设置 场景一: 集群服务器都可 连接 互联网 每个节点都去同步 国家授时中心/ 时间服务器, 可以加入crontab中去执行ntpdate -u ntp.api.bz 场景二、三 分布式集群中某⼀个服务器节点可以访问互联⽹或者所有节点都不能够访问互联⽹ 此时需要把 选取其中一台服务器 (192.168.0...
2020-12-27 19:22:46 492
原创 一致性Hash算法
分布式和集群分布式和集群是不⼀样的, 分布式⼀定是集群,但是集群不⼀定是分布式(因为集群就是多个实例⼀起⼯作,分布式将⼀个系统拆分之后那就是多个实例;集群并不⼀定是分布式,因为复制型的集群不是拆分⽽是复制)...
2020-12-27 18:40:29 242
原创 Tomcat 8.5.50 核心流程源码剖析---Mapper组件机制及请求处理机制
Tomcat请求处理流程: 当一个servlet请求到来的时候, tomcat是通过怎样的机制来定位到servlet请求, 并执行请求 的呢url: http://localhost:8080/web_demo/order/addorderMapper组件机制Tomcat 设计了 Mapper(映射)组件 完成 url 和Host、Context、Wrapper等组件容器的映射org.apache.catalina.mapper.Mapper.MapElement 基类,组件都继承于..
2020-12-27 12:43:40 497
原创 Tomcat 系统架构与原理剖析
1. 浏览器访问服务器的流程浏览器言说部服务器使用的是http协议, http是应用层协议, 用于定义数据通信的格式 ,具体的数据传输靠的是TCP/IP协议2. Tomcat总体架构2.1 Tomcat 模块分层结构图及Catalina位置Tomcat是一个由一系列可配置(conf/server.xml)的组件构成的Web容器,而Catalina是Tomcat的 servlet容器。从另一个角度来说, Tomcat 本质上就是一款 Servlet 容器, 因为 Catalin...
2020-12-27 12:12:49 298
原创 Tomcat 8.5.50 核心流程源码剖析---初始化与启动
1.启动流程时序图解读及容器生命周期管理机制tomcat启动流程startup.bat -> catalina.bat 中 找到启动的主类为org.apache.catalina.startup.Bootstrap 2. ini初始化在加载一此类加载器 父容器调用子容器的 init /start 方法 容器/组件 都有 init / start 方法, 初始化 后 启动,都是相同的 处理方式 -> 逐级初始化为什么这些 容器/组件 都有 in...
2020-12-27 11:17:10 277
原创 Tomcat源码构建
构建以apache-tomcat-8.5.61-src 为例0.Tomcat官网下载源码1.源码导⼊IDE之前准备⼯作 解压压缩包,得到目录apache-tomcat-8.5.61-src 进入apache-tomcat-8.5.61-src 目录, 新建 pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0...
2020-12-26 21:37:34 206
原创 Elasticsearch中date类型format说明
date类型格式说明,官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/mapping-date-format.html一个索引的 date 类型如下:{“properties”: {“create_date”: {“format”: “yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||ep...
2019-10-12 10:15:05 4391 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人