项目实战
文章平均质量分 78
渡远荆门外,来从楚国游。
山随平野尽,江入大荒流。
月下飞天境,云生结海楼。
仍怜故乡水,万里送行舟。
Hey 锡瑞
这个作者很懒,什么都没留下…
展开
-
基于canal+kafka+flink实现实时增量同步4:kafka消息入库到MySQL功能演示
一、新建三个表(1)主表user_id。它包含有主键user_idCREATE TABLE `user_id` ( `user_id` int(11) NOT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `age` int(11) DEFAULT NULL, `user_info_id` int(11) DEFAULT NULL, PRIMARY KEY原创 2021-05-26 17:24:17 · 975 阅读 · 0 评论 -
基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示
一、Cannal介绍二、Cannal作用canal是alibaba开源的基于mysql binlog解析工具,可利用它实现mysql增量订阅/消费。利用canal,可以将mysql的数据变化,通过解析binlog,投递到kafka(或rocket mq),mq的消费方,可以把这些数据变化,应用到不同的业务场景,比如:1. 同步到redis(即:数据库的变化自动同步到缓存)2. 同步到es搜索引擎(即:数据库的变化自动刷新ES索引)3. 同步到其它异构数据库(即:mysql的变化,自动原创 2021-05-10 21:43:44 · 1380 阅读 · 0 评论 -
实战责任链设计模式——反向同步关系型数据库(MySQL举例)(3)
接着责任链实现反向同步多数据源数据(2)提出的几个具体实现逻辑详细讲解:一、数据源获取1.1、厂模式获取具体需要处理的数据源+创建链接scanHandler = ScanFactory.getScanHandler(reversesyncReq.getComponentId())ScanFactory:public final class ScanFactory { private ScanFactory() { } public static fina原创 2021-01-27 23:51:43 · 630 阅读 · 0 评论 -
实战责任链设计模式——反向同步总体流程(2)
详细讲解下:责任链在反向同步功能里的使用具体实现我从Controller详细讲一遍处理逻辑(1)提交反向同步权限任务Controller接口 @RequestMapping(value = "/dbReverseSync", method = RequestMethod.POST) @ControllerWebPage public ResponseUtil dbReverseSync(@RequestBody Map params) { Response原创 2021-01-27 23:22:48 · 759 阅读 · 3 评论 -
实战责任链设计模式——反向同步多数据源架构设计(1)
一、责任链设计模式搭建骨架图什么是责任链模式:责任链设计模式背景说明:责任链模式包含一份请求对象和一系列执行对象,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这里的场景是:找到某个Handler处理掉请求。反向同步功能实现里边,需要同步多种类型的数据源到我们自己的库,例如关系型mysql、oracle,大数据hive,索引es等等。单从反向同步这个功能来说,我需要执行一个请求,能根据不同的类型处理不同的同步操作,只处理一个具体Handler的(记住这里,也可.原创 2021-01-27 23:13:15 · 694 阅读 · 2 评论 -
实战高并发秒杀实现(4):基于责任链设模式的网关实现限流
一、理论基础1.1、常见限流算法常用的限流算法(1)令牌桶实现原理:以规定的速率往令牌桶中存入Token,用户请求必须获取到令牌中的Token才可以处理请求,如果没有从令牌桶中获取到令牌则丢失该请求。例子:令牌桶中最多只能存放20个Token,以规定速率存入Token实现在高并发情况下优势:控制请求的速率匀速相等的(能控制速率)(2)漏桶-实现原理:水(请求)先进入...原创 2020-03-08 23:22:30 · 1454 阅读 · 0 评论 -
实战高并发秒杀实现(3):基于Token令牌桶+MQ实现修改库存
一、理论基础1.1、前端优化使用动静分离、将静态资源存放到第三方文件服务器中实现cdn加速,目的减轻秒杀抢购带宽 当用户点击秒杀按钮的时候,应该将按钮disabled 防止重复提交 使用复杂的图形验证码防止机器模拟 秒杀详情页面,使用定时器根据用户信息查询秒杀结果 商品的详情页面使用nginx+lua+openresty 实现静态化页面1.2、网关ratelimter、n...原创 2020-03-08 21:18:20 · 4165 阅读 · 16 评论 -
实战高并发秒杀实现(2):防止库存超卖问题(超详细)
一、理论基础1.1、防止库存超卖,需要关注的问题(1)秒杀数据库的设计;(2)基于数据库乐观锁防止库存超卖;(3)基于redis实现用户行为频率限制——用户再次抢购时提示“该用户操作频繁,请少稍后重试,一般可设置10秒后才能再次调用秒杀接口”;(4)基于Token令牌+MQ实现异步修改库存;(5)使用apache-jmeter做秒杀压力测试(可配置线程数和循环次数,比如线程...原创 2020-03-08 19:24:54 · 18827 阅读 · 23 评论 -
实战高并发秒杀实现(1):理论研究
一、什么是秒杀1.1、常见的秒杀方式不管是购物,下单(12306抢票),都可以理解为:一元秒杀:限量1件或者几件; 低价限量秒杀:限量不限时,秒完即止(12306抢票); 低价限时限量秒杀:限时限量,在规定的时间内,无论商品是否秒杀完毕。注意:浏览器秒杀和APP秒杀是有区别的1.2、秒杀抢购可能会遇到的问题(1)前端层面(带宽优化):突然增加的网络及服务器带宽; 用...原创 2020-03-07 23:16:03 · 983 阅读 · 0 评论 -
Feign服务调用深入研究
一、理论基础1.1、Feign的作用支持可插拔的HTTP编码器和解码器; 支持Hystrix和它的Fallback; 支持Ribbon的负载均衡; 支持HTTP请求和响应的压缩1.2、FeignClient的实现原理参考:https://www.jianshu.com/p/50fd582b739f(1)在启动类添加@EnableFeignClients注解。其主要功能是初始...原创 2020-03-07 17:27:31 · 967 阅读 · 0 评论 -
网关服务架构:基于建造者模式/责任链模式实现互联网安全架构
一、理论基础1.基于网关实现IP黑名单与名单拦截通过日志可以发现,比如有个客户端恶意请求我们接口,可以通过黑名单和白名单,这时可以把这个IP加入黑名单(或者使用Token+过期时间)类似的功能是通过Hystrix实现IP限流网关介绍:什么是网关2.API接口实现Token授权认证3.使用MD5实现API接口验证签名,防止抓包篡改数据4.实现API接口安全加密传输(公钥和...原创 2020-03-04 23:39:24 · 861 阅读 · 0 评论 -
支付功能实战(5):使用RabbitMQ解决分布式事务
一、理论基础1.1、基于MQ解决分布式事务原理(1)确保生产者(支付服务)一定将增加积分的消息投递到MQ中——使用确认机制;(2)确保消费者消费消息一定成功——使用手动ack应答模式 。如果没有出现异常则通知MQ删除该消息,有异常则重试消费,重试过程中需要注意幂等性问题。(3)如果MQ异步代码执行之后,代码出现异常的情况下,如何保证分布式事务问题?——采用补偿机制。二、...原创 2020-02-27 23:50:34 · 2190 阅读 · 0 评论 -
支付功能实战(4):基于模版方法+多线程+RabbitMQ实现支付系统(银联/支付宝/微信)的异步回调
思考:回调代码中如何实现基于设计模式的重构?——采用模板方法模式一、理论基础1.1、理论概述抽象模板(Abstract Template)角色有如下责任:(1)定义了一个或多个抽象操作(先定义一个抽象类),以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤;(2)定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑...原创 2020-02-25 23:14:57 · 2207 阅读 · 0 评论 -
支付功能实战(3):基于Token+策略+工厂模式+反射实现支付类型选择以及支付信息提交
代码都是基于设计模式构建的策略+工厂+反射 :实现解决if else多重判断问题一、理论基础1.1、为什么要使用策略模式1.2、什么是策略模式策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。详细介绍参考:https://blog.csdn.net/RuiKe140036...原创 2020-02-22 09:32:40 · 1192 阅读 · 0 评论 -
支付功能实战(2):分布式事务介绍/单例模式介绍
一、解决分布式事务问题1.1、付系统分布式事务问题存在原因用户在银联系统中,支付完成之后,如何把结果通知给商户端1.2、跨系统中如何解决分布式事务...原创 2020-02-17 15:42:05 · 1010 阅读 · 0 评论 -
支付功能实战(1):环境搭建
思考:表的 设计中如何存放金额呢?——long 存放分单位(1.24元等于多少分 24/100 0.24) 验证签名作用?——防止数据被篡改 互联网安全架构平台设计,具体底层如何实现? 支付这里可以重构,使用到模板方法模式——(相同的支付业务请求如支付宝、微信支付等代码实现重构,因为整体的支付请求都是相同的,只不过有一些支付的接口不同,把这些支付接口不同的代码抽取出来给每一个子类进行实现...原创 2020-02-15 23:39:07 · 968 阅读 · 0 评论 -
Kafka+ELK实现分布式日志收集
思考:Logstash输入来源有那些?——本地文件、kafka、数据库、mongdb、redis AOP如何拦截日志? Logstash怎么订阅kafka? logstash需不需要集群? 哪些日志信息需要输入logstash? ——error级别 .AOP 异常通知 服务与服务之间如何区分日志索引文件?——服务名称 在分布式日志收集中,相同的服务集群的话是不需要区分日志索引文件...转载 2020-02-13 23:24:11 · 1027 阅读 · 0 评论 -
ES与MySQL数据同步(全量与增量)
思考:考虑ES如何与数据库实现同步? ES如何查询多个字段? 如何构建商品服务(包含搜索功能)? ES肯定是集群的,如何集群? 一个项目当它做大做当后都可能会需要将数据从传统的数据库同步到另一种数据集合中,一般用于提高查询效率或将数据进行备份的目的。其中比较常见的一种同步方式是从关系型数据库同步到es一、理论基础1.1、es与数据库是如何保持一致的呢?原理:1.2、My...转载 2020-02-11 23:41:36 · 35308 阅读 · 5 评论 -
SSO单点登陆
一、理论基础1.1、为什么需要做单点登陆系统大型互联网公司中,项目旗下可能会有多个子系统,每个登录实现统一管理,多个账户实现统一管理。例子:比如阿里旗下支付宝,咸鱼等,只要有一个系统登录情况下,其他就不需要登录了(或者直接拿一个授权就行了)(XXL-SSO是国产的,CAS相对来说好点)1.2、单点登陆系统实现思路核心:靠认证授权中心1.3、单点登陆系统框架xxl...转载 2020-02-04 10:39:10 · 1350 阅读 · 0 评论 -
唯一登录、联合登录、单点登录——唯一登录
一、理论基础(1)理解redis和token的使用 使用token主要是为了安全,还有就是可以让安卓、IOS、PC等多端登录。用户每一个端登陆成功之后,会对应生成一个token令牌(临时且唯一)存放在redis中作为redis的key ,value 作为userid存储;根据userId+loginType 查询当前登陆类型账号之前是否有登陆过,如果登陆过 清除之前redis token...转载 2020-02-02 13:07:57 · 3948 阅读 · 1 评论 -
微服务接口细分安全领域DTO、DO、VO
一、理论基础需要掌握知识点:vo bo dto do区别 接口细分安全领域dto与do dto细拆分输入与输出 手写Dto与Do转换工具类1.1、相关概念(1)VO(View Object):视图对象。用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。(2)DTO(Data Transfer Object):数据传输对象。主要用于外部接口参数传...转载 2020-02-01 23:18:47 · 4376 阅读 · 0 评论 -
分布式配置中心Aploll搭建
一、理论基础1.1、Aploll与SpringCloudonfig的区别Aploll(携程开源的)配置文件存放在数据库中,SpringCloudConfig存放在Git里面(其实SpringCloud项目更加推荐SpringCloudConfig);Aploll有web界面可以傻瓜式操作,SpringCloudConfig无界面。二、Aploll环境搭建2.1、具体步骤1. ...转载 2020-01-28 23:54:08 · 687 阅读 · 0 评论 -
GitLab环境搭建/Jenkins自动化部署环境搭建
一、理论基础1.1、什么是GitLabGitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。二、环境搭建2.1、docker下详细项目搭建(1)下载镜像文件docker pull beginor/gitlab-ce:11.0.1-ce.0注意:一定要配置阿里云的加速镜像(2)创建GitLab 的配置 (...转载 2020-01-28 00:10:37 · 439 阅读 · 0 评论 -
商城类项目实战涉及到的一些知识点
一、基础服务搭建1.1、Maven私服搭建https://blog.csdn.net/RuiKe1400360107/article/details/1040839541.2、GitLab仓库管理搭建https://blog.csdn.net/RuiKe1400360107/article/details/1040919771.3、Apollo配置中心搭建https://b...原创 2020-01-25 17:25:26 · 1528 阅读 · 0 评论