自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 如何设计一个电商系统(五) - 账户系统

账户系统账户系统系统简介系统需要解决的问题账户系统系统简介系统需要解决的问题

2021-02-20 17:29:56 311 1

原创 如何设计一个电商系统(四) - 购物车系统

购物车系统购物车系统设计系统简介购物车系统的主要功能系统面临的问题购物车系统设计系统简介购物车系统的主要功能是用户在选购商品时,下单之前,暂存用户需要购买的商品。购物车系统是一个相对比较简单的系统,没有大流量和高并发的访问压力,对数据的可靠性要求也不是很高。购物车系统的主要功能商品加入购物车购物车列表页发起结算下单所有页面都需要一个购物车小图标,可直接跳转至购物车系统面临的问题...

2021-02-20 16:51:13 959

原创 如何设计一个电商系统(三) - 商品系统

商品系统商品系统系统简介商品系统中的问题如何应对高并发的访问如何存储海量的商品信息商品系统系统简介商品系统主要就是商品信息的增删改查。商品系统中的问题如何应对高并发的访问如何存储海量的商品信息...

2021-02-20 16:27:23 372 1

原创 如何设计一个电商系统(二) - 订单管理

订单管理订单管理订单系统简介订单系统中面临的问题数据不能错(最基本)如何避免重复下单如何解决并发更新问题订单管理今天我们来介绍一下电商系统中最关键的一个模块订单管理。订单系统简介我们的订单系统应该包含这些功能:创建订单随着购物流程更新订单状态查询订单,包括订单数据生产各种报表我们的系统主要涉及这样几张表:订单主表:保存订单的基本信息订单商品表:保存订单的商品信息订单支付表:保存订单的支付和退款信息订单优惠表:保存订单的所有优惠信息订单系统中面临的问题数据不能错(最基本)

2021-02-20 15:17:35 959

原创 Soul网关的高性能思考

Soul网关能够以极高的性能进行数据转发,它肯定有些比较好的设计;经过这段时间的源码学习,我发现Soul源码里面的代码质量特别好;大量的使用设计模式;我们可以从系统中发现,Soul源码里面大量的使用了设计模式,这些设计模式帮助我们实现了一个高聚合低耦合的应用系统,同时降低了系统的复杂性;我们以soul-plug为例:在插件模块中,soul网关通过使用模板模式完成了选择器和规则匹配的功能,极大的提高了这块的可重复利用性;同时使用了责任链模式屏蔽掉了底层核心逻辑的部分;我们在设计一个新的 插件的时候,

2021-02-03 01:00:22 630

原创 Soul源码学习十三 - 微内核架构

我们通过Soul网关插件的执行流程可以发现,soul网关的设计特别像微内核架构中的规则引擎,今天我们就来看看微内核架构,以及Soul里面使用它的影子;什么是微内核架构?微内核架构,也被称为插件化架构,是一种面向功能进行拆分的课拓展性架构,在soul网关里面,我们通过实现不同的插件,实现对流量的各种控制。基本架构微内核架构包含两类组件:核心系统和插件模块。核心系统:负责和具体业务无关的通用功能,例如模块加载,模块间通信等;对标到soul里面,像selector的选择和rule的匹配就是流量的通用功

2021-01-29 01:07:27 347 2

原创 Soul源码学习十二 - divide插件实现原理分析

Divide插件实现原理分析Divide插件实现原理分析divide插件的执行流程ip端口探活负载均衡Divide插件实现原理分析divide插件的执行流程divide插件的调用使用了一个模板模式和责任链模式,在AbstractSoulPlugin抽象方法中实现了模板方法,为所有的插件实现了统一的选择器过滤和规则过滤的算法;每个单独的插件通过继承AbstractSoulPlugin抽象类,并且实现doExecute方法来实现行插件的功能;// 选择器和过滤器的操作 @Override p

2021-01-28 02:15:42 239 1

原创 Soul源码学习十一 -http长轮询中的多线程编程

Soul 网关中的多线程编程我们在阅读Soul网关中http长轮询这块代码的时候,我们发现里面有很多关于多线程编程的东西;本篇就通过Soul网关http长轮询的例子来聊一聊其中的多线程编程。多线程工具包我们可以看到src/main/java/org/dromara/soul/admin/listener/http/HttpLongPollingDataChangedListener.java通过引用java.util.concurrent包来帮助我们简化多线程操作import java.util.c

2021-01-27 00:38:42 128

原创 Soul源码学习 - 数据同步的一个问题记录

环境今天讨论的版本是2.2.1 - release版本;soul-admin 和 soul-bootstrap都集群部署分析问题admin在做集群不是的时候,如果用户修改配置,当节点数据只到达其中一个而没有到达其他节点时,其他节点会有一个5分钟的延时。admin节点和节点之间时互不感知的。在HttpLongPollingDataChangedListenner 的afterInitialize方法中会通过一个5分钟的定时任务去拉取数据到admin缓存中。@Override prote

2021-01-26 02:41:58 84

原创 Soul源码学习(九) - Nacos数据同步

本文将介绍一下Soul网关中Nacos的数据同步使用;启动步骤修改soul-admin中的配置;修改soul-bootstrap中的配置;启动本地Nacos;启动soul-admin和soul-bootstrap工厂;soul-admin中的配置soul: database: dialect: mysql init_script: "META-INF/schema.sql" sync:# websocket:# enabled: true#

2021-01-24 07:46:22 84

原创 Soul源码学习(八) -zookeeper数据同步

zookeeper数据同步zookeeper数据同步Soul网关提供的三种数据同步方式为什么需要数据同步?zookeeper数据同步原理zookeeper 的watch 机制watch监听事件zookeeper数据同步Soul网关提供的三种数据同步方式Soul网关提供了一下三种,可以任意选择基于zookeeper的监听订阅模式;webSocket推送模式;http长轮询;为什么需要数据同步?Soul网关是服务层和控制台分离的,而服务层又是可以集群部署的,存在数据一致性问题;网关是公司

2021-01-23 00:37:19 81

原创 记录一个使用zookeeper数据同的一个问题

一个问题记录今天在做zookeeper数据同步的时候,不知道是自己的启动步骤错了还是配置配有配,使用zookeeper做数据同步的时候数据一致无法同步到zookeeper,并且项目中的断点也一直进不去。配置zookeeper作为数据同步方式,修改Admin和bootstrap的配置文件; zookeeper: url: localhost:2181 sessionTimeout: 5000 connectionTimeout: 2000本地启动zookeeper服务;

2021-01-22 00:52:19 103

原创 Soul源码解析(六)- webSocket数据同步

webSocket数据同步webSocket数据同步Soul网关提供的三种数据同步方式为什么需要数据同步?数据同步原理webSocket数据同步原理代码结构目录webSocket数据同步Soul网关提供的三种数据同步方式Soul网关提供了一下三种,可以任意选择基于zookeeper的监听订阅模式;webSocket推送模式;http长轮询;为什么需要数据同步?Soul网关是服务层和控制台分离的,而服务层又是可以集群部署的,存在数据一致性问题;网关是公司流量入口,为了提升响应速度,所有

2021-01-21 00:41:52 148

原创 Soul 源码解析(五)- 选择器和规则匹配

选择器和规则匹配选择器和规则选择器和规则器的代码位置代码解析选择器和规则Soul网关里的插件使用的是责任链的模式进行处理,所有流进网关的流量都会经过每个插件的处理;但是再插件处理之前,流量还需要经过Selector和rule的处理,过滤调不符合规则的流量数据。话不多说,直接看代码;选择器和规则器的代码位置如图所示,选择器和规则的代码再soul-plugin - soul-plugin-base - AbstractSoulPlugin下;代码解析一个插件对应多个选择器,一个选择器对应多个规

2021-01-20 02:01:43 520 1

原创 Soul源码解析(二)- 发布订阅模式

Soul源码解析-发布订阅模式发布订阅模式(观察者模式)什么是发布订阅模式?发布订阅模式解决了什么问题?示例代码Soul源码解析功能写在最后本篇我们将带大家学习一下发布订阅模式,并且提供一个发布订阅模式的示例,同时我们结合Soul源码来看一下Soul网关是如何运用发布订阅模式的。发布订阅模式(观察者模式)什么是发布订阅模式?在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖对象都会自动收到通知。发布订阅模式解决了什么问题?一个对象状态发生变化的时候会通知多有订阅它的对象,其

2021-01-19 00:59:04 297 2

原创 Soul 源码解析(一):Soul网关里的负载均衡策略

Soul网关如何实现负载均衡负载均衡类结构Soul网关支持的负载均衡策略随机&加权随机随机加权随机负载均衡类结构我们定义了一个LoadBalance接口,接口里面定义了一个select方法,用来选择网关要将请求转发到哪个服务器;我们定义了一个AbstractLoadBalance抽象类,抽象类主要实现了select方法,以及定义了一个doSelect方法(实现类通过重写doSelect完成各种负载均衡策略);定义了三个不同策略的负载均衡策略来实现AbstractLoadBalance抽象

2021-01-17 01:58:21 328

原创 Soul网关 - 责任链模式

责任链模式什么是责任链模式责任链模式主要解决了什么问题?责任链模式的使用场景代码示例责任链模式在框架中运用的好处总结Soul网关里面的各个插件都是采用的是责任链模式,今天我们就来聊一聊责任链模式。什么是责任链模式将请求的发送和接受解耦,让多个接受对象都有机会处理这个请求。将这个接受对象串成一条链,并沿着这条链传递这个请求,知道链上的某个对象能够处理它为止。实际上责任链模式还有一种变体,那就是请求会被所有的处理器都处理一边,不存在终止的情况。其实我们可以将责任链模式看成是一个生产汽车的流水线,整条

2021-01-16 01:18:17 365 1

原创 Soul 网关入门示例演示

Soul 网关入门Soul网关入门使用示例Soul 网关入门简介Soul网关简介源码地址环境要求项目结构使用实例Springboot 工程使用示例(divide 插件)写在最后为什么需要数据同步?采用何种数据同步策略?简介Soul网关简介Soul网关是一个基于WebFlux的异步的,高性能的,响应式的API网关;特点支持各种语言(http协议),支持dubbo,springcloud协议;插件化设计思想,插件热插拔,易扩展;灵活的流量筛选,能满足各种流量控制;内置丰富的插件支持,鉴权,

2021-01-15 01:06:19 527

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除