- 博客(56)
- 资源 (1)
- 收藏
- 关注
原创 ShardingSphere源码解析 前期准备
在开始 ShardingSphere 源码解析前,应先翻阅相关介绍文档,了解其解决的问题及其使用场景。然后 run 官方 demo,简单串一下使用流程,为后续深入源码做准备。
2021-08-24 08:29:51 505 1
原创 【Soul网关探秘】springcloud插件原理
文章目录一、插件概述二、插件处理流程三、负载均衡器3.1 Ribbon 是什么?3.2 Ribbon 能干什么?3.3 Ribbon 在插件中的职责四、小结一、插件概述插件定位springcloud 插件是一个 springcloud 正向代理插件,所有的 springcloud 请求都由该插件进行负载均衡处理。生效时机当请求头的 rpcType = springcloud 且插件启用时,它将根据请求参数匹配规则,最终交由下游插件进行响应式代理调用。二、插件处理流程1)先回顾下请求处理类插件的
2021-02-05 07:29:34 474
原创 【Soul网关探秘】divide插件原理
文章目录一、插件概述二、插件处理流程三、主机探活3.1 探活时机3.2 探活任务3.3 活性检查四、负载均衡五、小结一、插件概述插件定位divide 插件是一个 http 正向代理插件,所有的 http 请求都由该插件进行负载均衡处理(具体的负载均衡策略在规则中指定)。生效时机当请求头的 rpcType = http 且插件开启时,它将根据请求参数匹配规则,最终交由下游插件进行响应式代理调用。二、插件处理流程1)先回顾下请求处理类插件的通用流程(AbstractSoulPlugin # exe
2021-02-04 14:49:27 626
原创 【Soul网关探秘】http数据同步-Web端处理变更通知
个人知识库引言上一篇,梳理http 数据同步策略的变更通知机制,本篇开始探究配置变更通知到达后, soul-web 端的处理响应。不同数据变更的通知机制应当是一致的,故本篇以 selector 配置变更通知为切入点进行深入。通知处理入口上回我们说到 HttpSyncDataService 的 doLongPolling,在其内部发起通知订阅并接收响应通知:private void doLongPolling(final String server) { ... String li
2021-01-31 03:37:12 324 4
原创 【Soul网关探秘】http数据同步-变更通知机制
引言上一篇,梳理除了 soul-admin 在发出数据变更通知前的处理脉络,本篇开始探究 http 同步策略的变更通知机制,不同数据变更的通知机制应当是一致的,故本篇以 selector 配置变更通知为切入点进行深入。配置操作入口找到 ConfigController,这是配置操作的入口其持有一个 HttpLongPollingDataChangedListener 引用,通过 HttpLongPollingDataChangedListener 实现配置变更通知订阅和配置获取。通知订阅:@
2021-01-30 10:39:13 262
原创 Soul网关源码解析(六)网关代理后端服务总结
引言经过第一周的学习,对各类常见服务接入网关有了比较清晰的认知,在此做总结性梳理。知识地图一、后端服务接入soul网关流程:注意事项:注意核对admin与网关配置策略是否保持一致注意网关与后端服务配置的注册中心是否一致注意soul-client配置与注解的配合二、网关数据同步原理:三、部署结构四、通用活动流(后续补图)后端服务注册服务到注册中心(HTTP服务不需要)后端服务注册元数据到adminadmin同步元数据到网关用户发起http请求到网关网关根据选择器和规则
2021-01-29 08:30:20 281
原创 【Soul网关探秘】http数据同步-Admin通知前处理
引言本篇开始研究 Soul 网关 http 数据同步,将分为三篇进行分析:《Admin通知前处理》《变更通知机制》《Bootstrap处理变更通知》希望三篇完结后能对 Soul 的 http 数据同步策略有所收获。本篇旨在探究 soul-admin 端在发起变更通知前所做的处理。不同数据变更的处理模式应当是一致的,故本篇以 selector 配置变更为切入点进行深入。一、配置变更入口找到 SelectorController,这是 selector 配置变更的入口其持有一个 Sel
2021-01-29 08:14:46 274
原创 【Soul网关探秘】微内核架构及实现
引言微内核架构是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品的应用。一、基本架构微内核架构包含两部分组件:核心系统(core system)和插件模块(plug-in modules)。应用逻辑被分割为独立的插件模块和核心系统,提供了可扩展性、灵活性、功能隔离和自定义处理逻辑的特性。核心系统通常提供系统运行所需的最小功能集。负责和具体业务功能无关的通用功能插件模块插件模块是独立的模块,包含特定的处理、额外的功能和自定义代码,来向核心系统增强或扩展额外的业务能力。负责实
2021-01-24 04:42:32 925 4
原创 【Soul网关探秘】配置同步原理
引言网关是流量请求的入口,在微服务架构中承担了非常重要的角色。在使用网关的过程中,为了满足业务诉求,经常需要变更配置,比如流控规则、路由规则等等。因此,网关动态配置是保障网关高可用的重要因素。探究动态配置实现之前,我们需要先了解Soul的配置同步原理。本篇内容整理自官方文档。配置同步流程翻阅官方文档,我们找到了如下所示数据同步流程图:Soul网关在启动时,会从配置服务同步配置数据,并且支持 pull 和 push 两种模式获取配置变更信息,并且更新本地缓存。网关持续运行期间,管理员在管理后台
2021-01-23 10:19:47 733
原创 【Soul源码探秘】插件链实现
引言插件是 Soul 的灵魂。Soul 使用了插件化设计思想,实现了插件的热插拔,且极易扩展。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。Soul 是如何实现插件化设计的呢?一切还得从插件链说起,本篇我们来探密 Soul 中插件链的实现。从插件说起Soul 中所有插件最终均继承自 SoulPlugin,其完整继承关系如下所示:可以看到,Soul 的插件生态极其丰富,正是如此丰富的插件支撑起了 Soul 网关强大的扩展能力。我们以常用的 DividePlugin 为例,分析插件内部所
2021-01-22 05:07:43 431
原创 Soul网关源码解析(五)接入 Spring Cloud 服务
目标使用 soul 接入 sprinngcloud 服务源码解析 - springCloud 服务注册到网关源码解析 - 网关代理 springCloud 服务总结一、接入 sprinngCloud 应用本小节,我们参考《Soul 文档 —— springcloud 用户》文章,接入 Soul 服务网关。整个示例架构如下图所示:下面,我们来开始正式接入 Spring Cloud 应用。1.1 设置 springcloud 插件使用浏览器,访问 soul-admin后
2021-01-20 04:33:37 497
原创 Soul网关源码解析(四)接入Sofa服务
目标体验 sofa 插件分析 sofa 接口如何注册到网关分析 sofa 插件 如何代理 sofa 服务总结关于 SOFARPC简介SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由
2021-01-20 04:26:41 578
原创 Soul网关源码解析(三)代理Dubbo服务
目标使用 soul 代理 dubbo 服务dubbo 服务如何注册到网关的?dubbo 插件是如何工作的?理清 http --> 网关–> dubbo provider 整条链路经历了什么。总结一、使用 soul 代理 dubbo 服务1、dubbo 服务接入网关1.1 springboot 项目接入方式1.1.1 依赖引入alibaba dubbo 用户 <dependency> <groupI
2021-01-17 03:46:27 521
原创 Soul网关源码解析(二)代理Http请求
如何读开源项目:对着文档跑demo,对着demo看代码,懂一点就开始试,有问题了问社区。今日目标:1.运行examples下面的 http服务2.学习文档,结合divde插件,发起http请求soul网关,体验http代理3.记录心得,写博客分享。一、从官方文档开始打开 用户使用文档 - http用户 页面,开始整理关键要素。1、接入说明:接入前,需要先启动 soul-adminsoul 使用 divde 插件来处理 http 请求,插件在 admin 后台开启。2、网关需要引入.
2021-01-16 06:08:33 450 1
原创 Soul网关源码解析(一)搭建网关环境
Soul源码学习-day01-搭建网关环境有幸参加soul网关社区的【发电机计划】,进行为期四周的源码深度学习,接下来的四周将在这里记录学习的脚印。目标1.搭建网关环境(github 一键三连 star,watch,fork)2.编译代码,运行soul-admin soul-bootstrap3.记录心得,写博客分享。过程启动前准备将fork的soul项目clone到本地git clone git@github.com:stephenshen1993/soul.git使用Maven编
2021-01-15 00:57:44 418 2
原创 快速上手Git
使用git 命令行时,经常会忘记相应的git命令,这次梳理最基本的git使用当做备忘,顺带帮助读者快速上手git。假定读者已经知道什么是Git。一、安装Git1.1 在Linux上安装Git# 1、查看是否安装git$ gitThe program 'git' is currently not installed. You can install it by typing:sudo apt-get install git# 2、若未安装,则执行下面命令$ sudo apt-get ins
2020-05-17 19:07:00 810
原创 单机部署SkyWalking+Elasticsearch
一、部署前的准备工作1、关闭 selinuxsed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/configsed -i 's/SELINUXTYPE=targeted/#&/' /etc/selinux/configsetenforce 02、安装需要用的工具yum -y install vim wget java3、下载SkyWalking和elasticsearchSkyWalking和elasticse
2020-05-09 09:15:03 1942
原创 Nacos下的多环境管理
文章目录Nacos下的多环境管理前言一、环境规划二、环境指定1、配置激活2、插件激活(仅本地有效)3、mvn激活4、启动参数激活5、环境变量激活提醒三、环境区分/隔离1、配置区分1.1 spring层区分1.2 nacos层区分namespace级区分group级区分data级区分2、服务区分2.1 namespace级区分2.2 group级区分(暂不支持)四、建议实施方案1、环境指定方案1.1...
2020-04-13 19:21:20 3746 2
原创 Homebrew安装Mysql
Homebrew安装Mysql安装方法查找并确定自己需要安装的版本安装msyql@5.7安装成功后,会看到这样的提示完全卸载方法关闭mysql服务执行卸载卸载检查安装方法查找并确定自己需要安装的版本brew search mysql# 以下是显示内容==> Formulaeautomysqlbackup mysql++ ...
2020-04-13 18:33:46 1418
原创 算法之大数相加
上周五去头条面试的时候,面试官给了道大数相加的题,觉得还是有些意思的,不敢私藏,拿出来给大伙品鉴品鉴。1.问题科学计算中往往需要很大的数字,我们可以使用如下的单链表结构来表示大数(整型),每个节点存储0-9的整数class Node{ Node next; int value;}如: 5274 可以表示为 5-&gt;2-&gt;7-&gt;4问:如何实现大数的运算,比如大数相...
2018-12-03 20:42:44 800
原创 面试集锦|浪潮集团技术一面
浪潮集团技术一面2018.11.081、自我介绍2、你主要想做哪方面?3、C++用的很熟吗?4、Java呢?5、SpringBoot和SpringMVC的优缺点6、聊聊SpringCloude?7、Docker自己用过吗?聊聊8、Keeps、ACYS了解过吗?9、Redis常用的数据结构有哪些?10、hash里存的是什么?11、redis的序列化和反序列化12、redis...
2018-11-09 08:57:21 7055
原创 面试集锦|狮桥资本技术一面
最近自己在找新工作,被问到一些面试题,按流程给大家记录下来了以供参考。1.自我介绍2.java中你用到的哪些你熟悉的框架?简单聊聊3.聊聊spring4.Spring怎么实现IOC注入?底层怎么实现?5.循环引用的bean能注入吗?6.springMVC从请求到响应中间经历的流程7.怎么拦截某个特定的url,做日志分析。怎么实现?8.除了mybatis以外还用过哪些数据库操作框架...
2018-11-07 01:03:16 1243
原创 面试集锦|京东海外业务技术一面
1.自我介绍2.挑一个你的项目聊聊,背景、架构以及你负责的部分,画个图讲讲。3.主要面向什么客户?4.这些系统都是你系统中的子系统吗?5.是纯java项目吗?6.刚你提到的浏览器显存和内存问题,当时你们怎么解决的?7.刚才你说的这个项目用到了哪些java技术栈?8.是b/s还是c/s架构?9.nginx是怎么把用户请求均匀地分发到服务器的?10.怎么侦察到宕机的服务器?11.落...
2018-11-07 00:55:48 302
原创 分布式温习概要
文章目录一、主流架构模型1.1 SOA架构1.2 微服务架构二、分布式架构的基本理论2.1 CAP理论:2.2 BASE理论:2.3 分布式架构下高可用设计:2.4 分布式下的可伸缩设计2.5 加速静态内容访问速度的cdn一、主流架构模型1.1 SOA架构SOA全称(Service Oriented Architecture) 中文意思为 面相服务的架构,他是一种设计方法,轻重包含多个服务,...
2018-11-01 00:53:45 168
原创 Java基础温习概要
文章目录一、IO框架1.1 流的概念1.2 流的分类1.2.1 分类:1.2.2 常用输入输出流:二、多线程框架2.1 进程和线程2.2 多线程实现方式三、集合框架3.1 类集框架主要接口3.2 Set和List3.3 Collection接口3.4 List接口3.5 Set接口3.6 Queue接口(涉及到线程比较多,不细说,略)3.7 Map接口3.7.1 四大实现类:3.7.2 四种map...
2018-11-01 00:32:17 242
原创 Spring AOP底层实现原理-动态代理
AOP是什么?spring框架的核心之一AOP,面向切面编程是一种编程思想。我对于面向切面编程的理解是:可以让我们动态的控制程序的执行流程及执行结果。spring框架对AOP的实现是为了使业务逻辑之间实现分离,分离主业务逻辑及次要业务逻辑,进而降低系统间的耦合度。spring框架对于这种编程思想的实现基于两种动态代理模式,分别是 JDK动态代理 及 CGLIB的动态代理,这两种动态代理的区别是...
2018-10-24 23:35:04 746
转载 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式
目录1. 系统吞度量要素:1.1 概念1.2 分析2. 系统吞吐量评估:2.1 分析:2.2 通常的技术方法:2.2 案例2.2.1 淘宝2.2.2 B2B中文站3. 软件性能的关注点4. 软件性能的几个主要术语4.1 响应时间:4.2 并发用户数的计算公式4.3 吞吐量的计算公式4.4 性能计数器4.5 思考时间的计算公式PS:以下是性能測试的主要概念和计算公式,记录下:1. 系统吞度量要素...
2018-10-24 18:29:39 296
原创 亿级流量架构|day12-京淘前台搭建
京淘前台搭建1.搭建前台项目1.1 创建jt-web项目1.2 编辑配置文件1.2.1 编辑web.xml1.2.2 编辑Spring配置文件1.2.3 实现京淘首页跳转2.前台业务实现2.1 伪静态技术2.1.1 静态页面特点2.1.2 动态页面特点2.1.3 伪静态技术介绍2.2 HttpClient2.2.1 介绍2.2.2 jar包导入2.2.3 HttpClient入门案例2.3 Spr...
2018-10-20 13:48:24 576 2
原创 亿级流量架构|day11-Redis高级
Redis高级1.Spring整合哨兵1.1 入门案例1.2 编辑pro文件1.3编辑配置文件1.4 定义工具类2.Redis集群2.1 问题说明2.2 Redis集群实现2.3 脑裂3.集群搭建步骤3.1 划分集群规模3.2 搭建步骤3.3 复制出7001~7008文件夹3.4 修改多个文件端口3.5 编辑redis批量启动脚本3.6 通过ruby创建redis集群3.7 集群测试3.8 集群崩...
2018-10-20 12:51:59 548
原创 Java单元素枚举实现单例模式
引言单例模式比较常见的实现方法有懒汉模式、饿汉模式、DCL(双重检验锁)模式和公有静态成员等,不过自从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法。Java中的枚举枚举的用法比较多,本文主要介绍利用枚举实现单例模式的原理,所以这里顺带介绍一些相关的基础内容。基本用法枚举和类类似,一个枚举也可以拥有成员变量、成员方法和构造方法。先来看枚举最基本的用法:enum Typ...
2018-10-19 23:34:10 458
原创 论单例模式
第一种(懒汉,线程不安全):Java代码 收藏代码public class Singleton {private static Singleton instance;private Singleton (){}public static Singleton getInstance() { if (instance == null) { instance = new Si...
2018-10-19 22:18:35 125
转载 Redis 数据结构和主要命令【转】
Redis 数据结构和主要命令1 Redis介绍1.1 对Redis的理解1.2 Redis特点2 关于Key设计3 常用命令3.1 常用命令一:String3.2 常用命令二:List3.3 常用命令三:Hash3.4 常用命令四:Set3.5 常用命令五:Sorted Set3.6 常用命令六:Bitmap 和 HyperLogLog3.7 其他常用命令来源:kelgonwww.jian...
2018-10-18 00:00:33 195
原创 亿级流量架构|day10-Redis进阶
Redis中级1 Redis持久化策略1.1 策略说明1.2 RDB模式1.2.1 模式说明1.2.2 备份命令1.2.3 备份方式1.2.4 配置文件说明1.3 AOF模式1.3.1 模式说明1.3.2 AOF模式持久化策略2 Redis内存策略1 Redis持久化策略1.1 策略说明说明:redis作为内存数据库,需要保持大量用户的数据。但是redis中的数据保存在内存中,一旦遇上断电...
2018-10-17 22:24:55 516
原创 亿级流量架构|day09-Redis入门
Redis进阶1 Redis命令2 Redis入门案例2.1 引入jar包2.2 测试字符串2.3 测试Hash2.4 测试List2.5 Redis事务控制3 Spring整合Redis3.1 编辑pro文件3.2 编辑配置文件4 JSON回顾4.1 json官网介绍4.2 object格式1 Redis命令1.Hash类型说明:可以用散列类型保存对象和属性的值,表现为value部分为一个...
2018-10-17 08:30:01 399
原创 亿级流量架构|day08-数据库高可用进阶及Redis初识
数据库高可用实现二1 数据库高可用实现(二)1.1 当前数据库服务存在问题1.1.1 现在的架构设计1.1.2 主库宕机影响1.1.3 改进策略1.1.4 配置互为主从1.1.5 主从测试1.2 MyCat1.2.1 介绍1.2.2 MyCat安装1.2.3 编辑Server.xml1.2.4 编辑Schemas配置文件1.2.5 上传文件1.2.6 Mycat高可用测试1.3 分库分表1.3.1...
2018-10-15 00:00:18 396
原创 亿级流量架构|day07-集群部署及数据库高可用实现
集群部署及数据库高可用实现1 Linux集群部署1.1 连接数据库1.1.1 修改JDBC ip地址1.1.2 修改db.property1.1.3 Tomcat部署示意图1.2 部署单台Tomcat1.2.1 上传tomcat安装包1.2.2 修改配置文件1.2.3 启动tomcat1.2.4 关闭防火墙1.2.5 部署war包1.2.6 开放mysql权限1.2.7 单台tomcat测试1.2...
2018-10-14 01:07:15 466
原创 亿级流量架构|day06-Nginx高级应用
Nginx高级应用(上)0 前期准备1 服务代理1.1 需求1.2 编辑配置文件1.3 页面效果2 Tomcat集群部署2.1 Windows中部署tomcat集群2.1.1 准备3台tomcat2.1.2 修改配置文件2.1.3 项目发布2.2 基于Nginx实现负载均衡2.2.1 轮询策略2.2.2 权重2.2.3 IP_HASH2.2.4 Nginx故障迁移2.2.5 公司中服务器部署步骤3...
2018-10-13 20:00:47 699
原创 亿级流量架构|day05-图片回显及反向代理
京淘后台搭建1 富文本编辑器1.1 入门案例2 商品详情新增2.1 编辑POJO2.2 编辑controller2.3 编辑service3 商品详情回显3.1 页面分析3.2 编辑controller3.3 编辑service3.4 页面效果4 文件上传示例4.1 编辑mvc配置文件解析器4.2 编辑文件上传页面4.3 编辑controller5 商品图片上传5.1 页面分析5.2 定义图片回显...
2018-10-13 18:12:28 1579
原创 亿级流量架构|day04-PowerDesigner和通用Mapper
京淘后台搭建0 前期准备1 数据建模工具-PD的使用1.1 创建工作区1.2 创建表1.3 一对一关系1.4 一对多关系1.5 多对多关系2 通用Mapper2.1 数据持久层框架发展2.1.1 发展史:2.1.2 如何实现通用Mapper2.2 通用Mapper入门2.2.1 添加插件2.2.2 表与对象一一映射2.2.3 引入通用Mapper方法2.3 商品分类目录展现2.3.1 EasyUI...
2018-10-13 16:32:21 660
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人