
分布式理论&实践
文章平均质量分 61
以理论和实践出发学习分布式相关的技术和实现,并加入自己的理解,力求一起进步,解决业务问题。
程序男
java 服务端开发者。
展开
-
XxlJob深度性能优化实践
XxlJob性能优化,二次开发原创 2024-02-06 14:11:09 · 2083 阅读 · 1 评论 -
基础工具组件starter-idempotent-redission设计与实现
一、功能描述基于redis实现分布式锁,幂等,防重复提交,唯一性校验功能,一个注解即可使用全部特性。二、实现原理通过自定义注解将不同场景进行编码,同时基于切面即可完成不同场景下的业务特征需求。2.1 配置说明这里是单机版,可以按自己集群进行配置调整2.1.1 服务配置server: port: 80spring: application: name: server redis: #数据库索引 database: 0 host: 12原创 2021-01-16 14:38:50 · 507 阅读 · 1 评论 -
基础工具组件starter-paperwork-nacos设计与实现
一、功能描述基于nacos管理配置服务,这里借助starter机制与nacos,mysql一起配合管理非核心业务的配置类数据记录,基于json存储,简化业务配置类数据的管理。二、实现原理通过自定义注解将实体数据与nacos配置数据进行绑定动态与nacos进行交互,并解析数据,通过接口访问。2.1 配置说明nacos: papertext: dataIDArr: com.coderman.common.starter.papertext groupIDArr: 0-S原创 2021-01-10 22:30:48 · 272 阅读 · 0 评论 -
基础工具组件starter-datajson-nacos设计与实现
一、功能描述基于nacos管理配置服务,这里借助starter机制与nacos,mysql一起配合管理非核心业务的配置类数据记录,基于json存储,简化业务配置类数据的管理。二、实现原理通过自定义注解将实体数据与nacos配置数据进行绑定动态与nacos进行交互,并解析数据,通过接口访问。2.1 配置说明nacos: #:存储于数据库中的配置数据 datajson: #:扫描配置的枚举entity模型 entitypath: com.coderman.commo原创 2021-01-09 10:15:40 · 282 阅读 · 2 评论 -
基础工具组件starter-datadict-nacos设计与实现
一、功能描述基于nacos管理配置服务,这里借助starter机制与nacos一起配合管理k-v类型的数据,比如枚举数据,简化应用接入k-v数据的复杂度,降低代码复杂度。二、实现原理通过配置dataid,groupid动态与nacos进行交互,并解析数据,通过接口访问。2.1 配置说明nacos: #:数据字典类型的配置(k-v) datadict: dataIDArr: com.coderman.dict1,com.coderman.dict2,com.coderma原创 2021-01-08 15:46:39 · 411 阅读 · 0 评论 -
天画项目-Idgenerator的开源重构(上)
一、背景&需求1.1 背景我在建设一个租房平台,进行基于租房业务的架构实践。在写业务代码的时候发现我需要一个ID生成器用于生成各种ID和单据编号信息。1.2 需求ID生成器基于分布式打造,满足高可用性 支持分库分表ID生成的需求 支持各种业务单据编号生成的管理需求 具有可视化配置页面 尽量找开源并满足上述需求的项目,万不得已不自己开发梳理完我的需求之后我开始了在全网寻找ID生成器项目之旅。二、技术选型2.1 分布式ID生成器概览分布式ID生成器的方案之前调研过,原创 2021-01-01 20:09:05 · 226 阅读 · 0 评论 -
天画项目-低代码平台-分库分表sql生成设计与实现(dbops)
一、背景&需求1.1 背景我在业余时间构建了一个租房平台,采用springboot微服务的架构模式,同时结合服务化思想进行代码实践,但是由于存在很多重复且低效的变更导致业余时间对这个租房平台的进度产生影响。作为开发人员长期维护一个业余项目产生了很多进度延迟和效率问题会导致项目项目被遗弃的概率增大,对开发者来说也是一个非常沮丧的事情。为了避免这种事情发生,我一方面鼓励自己尽量每天贡献代码,并在合适的时间构建提高开发效率的使用平台。另一方面也是为了借助这个租房平台进行微服务+分库分表+DDD领域原创 2020-12-29 22:01:42 · 1127 阅读 · 0 评论 -
轻蜗牛直租平台-天画项目简介
一、背景我正在建设一个租房平台,进行基于租房业务的架构实践。在实践过程中发现作为开发人员缺乏大规模微服务,大数据量实战的经验,自己独立捣鼓的话往往无法掌控全局,不能很好的获取实战经验,而如今各个培训机构割韭菜非常多,把架构设计等主题炒的非常热,但是作为中级,初级人员想进行微服务架构设计实战,大数据量应用往往门槛偏高。我经过两个多月的业务实战发现我也陷入其中,在业务应用和大规模微服务实战的过程中缺乏很多基础服务能力,导致业务架构无法快速落地。当前就我一个人在持续投入,进度和效率非常低,因此尽早通过一套基础原创 2020-12-26 18:55:35 · 4627 阅读 · 6 评论 -
轻蜗牛直租平台-nacos1.3.1 windows 安装
一、背景我正在建设一个租房平台,进行基于租房业务的架构实践。微服务选型使用的spring cloud体系,因此需要考虑服务注册和服务治理的问题,由于spring cloud体系中的一些组件都在闭源,因此选取了当前比较合适也比较流行的Nacos注册中心,同时也提供了配置管理的功能。二、nacos版本现在的Nacos已经发展到了2.0了,但是不是稳定版,当前不建议部署到生产环境,比较稳定的是1.4.0,笔者在进行技术选型的时候选取的是1.3.1版本,因此这里主要介绍1.3.1版本的windows版本原创 2020-12-25 21:50:55 · 325 阅读 · 1 评论 -
轻蜗牛直租平台-rocketmq4.7.1 windows安装
一、背景我正在建设一个租房平台,进行基于租房业务的架构实践。微服务选型使用的spring cloud体系,同时基于不同业务领域上下文进行工程划分,其中需要分析不同上下文之间如何通过事件串联,哪些场景需要通过mq进行解耦,哪些需要同步调用,因此在不同工程系统间的调用中,需要有mq的参与。另外一方面我之前没怎么接触过开源的mq系统,这里正好需要一款开源的mq中间件进行实战。经过慎重考虑我决定选用rocketmq作为租房业务平台的消息中间件做业务模拟实战。二、rocketmq版本rocketmq自阿里原创 2020-12-24 23:46:28 · 670 阅读 · 2 评论 -
企业服务架构演进-第三方系统与自研之道
本篇是企业服务架构演进系列的第五篇,本篇主要讨论的内容是在进行企业信息系统建设的过程中我们如何针对当前业务背景,部门需求选择合适的企业信息系统。是招人搭建企业信息部门建设还是购买第三方软件服务,或者基于自研系统与第三方系统进行数据打通。这些方案一旦定下来就会长时间内影响整个公司的办公运营效率,如果事前没有进行充分的调研和实施,对于企业来说对信息系统一定不能更好的支撑业务发展。物料管理系统的下线在我印象中,我第一次遇到这种自研系统与第三方系统存在冲突和和替代的情况是在物料管理系统中,物料管理系统迭代开.原创 2020-08-03 14:59:05 · 842 阅读 · 0 评论 -
企业服务架构演进-单库多服务的尴尬
本篇是企业服务架构演进系列的第四篇,这里着重讲述了基于自研微服务RPC,WEB框架下的分布式微服务系统实践。我选了HR相关服务作为背景来阐述单库多服务下服务之间如何协作,如何分工并划分领域模型和服务,最后引出两个要点:1.微服务拆分的方法论和规范2.服务化如何解决此类单库多服务的拆分和落地。本文中的单库指的是hr数据库,这里简称hrdb.hrdb中的数据表大体可以分为三类1.单点登录用户账号表(account,loginlog),登录日志表.2.用户账号关联的内部员工信息表,部门表,薪资表,工作经历表.原创 2020-08-02 11:16:14 · 590 阅读 · 0 评论 -
企业服务架构演进-从jquery到vue的工程实践
本篇是企业服务架构演进系列的第三篇,随着前后端分离的工程设计思想逐渐形成潮流之后,各个互联网公司都在随前端开发潮流走。从此web软件应用开发变得更加专业,全栈越来越成为一个奢侈品,而另外一方面从企业服务系统中对于前端框架组件的应用选型也能看到一些端倪。本系列主要讲解我在之前公司的一些工程设计见闻和思考,整个系列大概有7篇文章。企业服务架构演进-引言2.企业服务架构演进-单体架构的变迁3. 企业服务架构演进-从jquery到vue的工程实践企业服务架构演进-单库多服务的尴尬企业服务架构演.原创 2020-08-02 11:13:34 · 422 阅读 · 0 评论 -
企业服务架构演进-单体架构的变迁
本篇是企业服务架构演进系列的第二篇,副主题是单体架构的变迁。短短2年,我在进行工程系统开发的时候不知不觉已经踩上了单体架构服务的尾巴,从而迈向分布式微服务的大道。本系列主要讲解我在之前公司的一些工程设计见闻和思考,整个系列大概有7篇文章。企业服务架构演进-引言###2.企业服务架构演进-单体架构的变迁企业服务架构演进-从jquery到vue的工程实践企业服务架构演进-单库多服务的尴尬企业服务架构演进-第三方系统与自研之道企业服务架构演进-走上造轮子之路企业服务架构演进-重复开发之殇.原创 2020-08-01 21:56:19 · 1437 阅读 · 0 评论 -
企业服务架构演进-引言
一晃,从事软件开发已经将近5年时间了,15年开始实习到现在一步步成长过来,从java基础开始,一路学习了SSH框架,设计模式,数据库,RPC,微服务理论和实践,到现在的分布式理论和实践,不断学习,感到非常充实。另一方面,从一开始抄代码学习,到搭建框架实践,到写毕业论文项目,到参与一个大型工程的CRUD,到自己封装一个工具类,写一个maven插件,写一个ORM 框架,封装一个多用途多功能的aop组件,创建一个通用的数据导出服务组件,搭建一个轻蜗牛直租平台架构。不断升级自己的能力,根据不同场景创建不同工具服务.原创 2020-08-01 21:54:33 · 331 阅读 · 0 评论 -
基于zookeeper集群实现分布式FIFO队列的工程实践
上一篇基于zk集群实现了分布式的id生成器,本篇继续基于zk集群进行场景实践,分布式的FIFO队列怎么用zk去做呢?直接上代码。一、创建队列需要用到的beanpackage com.coderman.zookeeper.clusterdemo.queuefifodemo;/** * @description: * @author: Fanchunshuai * @time: 20...原创 2020-02-22 16:48:50 · 236 阅读 · 0 评论 -
基于zookeeper集群实现分布式id生成器的工程实践
上一篇进行了近期面试的简单总结,同时也在上上一篇进行了基于zookeeper集群实现分布式锁的工程实践,这两篇是在同一天发布的,日更一篇其实有点难度,坚持吧。本篇进行了基于zookeeper集群实现分布式id生成器的工程实践。之前学习redis的时候也进行了id生成器的实践这里给出链接:https://blog.youkuaiyun.com/u010504064/article/details/104124...原创 2020-02-19 17:38:32 · 494 阅读 · 0 评论 -
基于zookeeper集群实现分布式锁的工程实践
上一篇实现了基于zookeeper集群实现的分布式配置中心的工程样例,并进行了总结,本篇进行基于zookeeper集群实现的分布式锁工程案例,当然也借鉴和参考了其他博客,这里先给出引用:https://blog.youkuaiyun.com/hongtaolong/article/details/88898875一、定义上下文锁的抽象对象package com.coderman.zookeeper.c...原创 2020-02-17 18:46:45 · 302 阅读 · 0 评论 -
基于zookeeper实现配置中心功能的简单工程
上一篇文章说到了一些zookeeper的应用场景,本篇将是对这些场景进行代码模拟实战的开篇文章。之前已经在本地搭建起了zk集群,并进行了一些api实践,因此本章主要讲述如何使用zk客户端模拟一个配置中心,推送变更的场景。初始化配置beanpackage com.coderman.zookeeper.clusterdemo.configdemo;import java.io.Serial...原创 2020-02-14 17:05:42 · 407 阅读 · 0 评论 -
zookeeper的应用场景简介
zookeeper的中文意思是动物管理员的意思,同时也是一个开放源代码的分布式协调服务,zookeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个搞笑可靠的原语集,并以一系列简单易用的接口提供给用户使用。zookeeper是一个典型的分布式数据一致性的解决方案。zookeeper可以保证如下分布式一致性特性1.顺序一致性这里的顺序一致性书中讲述的比较简单,那么怎...原创 2020-02-13 18:18:07 · 240 阅读 · 0 评论 -
Zookeeper封装的客户端jar包 api简单演示
前面几篇演示了zookeeper的原生api,由于原生api在实现某些功能上比较繁琐,开发人员需要关注很多实现细节,因此业界出现了对zookeeper原生api的一些封装工具包。本篇简单介绍比较流行的两个开源客户端。ZkClient<dependency> <groupId>com.101tec</groupId> <art...原创 2020-02-12 18:44:59 · 461 阅读 · 0 评论 -
Zookeeper主要的原生API介绍
通过前面三篇文章用代码演示了zookeeper的原生api,本篇通过截图的方式对zookeeper的主要api进行总结回顾。原创 2020-02-11 16:04:03 · 307 阅读 · 0 评论 -
使用zookeeper原生API链接ZK集群进行基本API演示(3)
前面一篇介绍了使用zk原生api链接zk集群进行获取子节点,获取数据的同步异步方式,本篇演示剩余其他api的代码demo.setDataAPI 代码演示package com.coderman.zookeeper.clusterdemo.version2;import org.apache.zookeeper.*;import org.apache.zookeeper.data.St...原创 2020-02-11 15:14:49 · 291 阅读 · 0 评论 -
使用zookeeper原生API链接ZK集群进行基本API演示(2)
前面一篇介绍了使用zk原生api链接zk集群进行基本api的演示,演示了连接zk初始化的过程和创建节点的过程。本篇演示获取子节点,获取数据的同步异步获取代码demo.package com.coderman.zookeeper.clusterdemo.version2;import com.alibaba.fastjson.JSON;import org.apache.zookeepe...原创 2020-02-10 18:25:29 · 341 阅读 · 0 评论 -
使用zookeeper原生API链接ZK集群进行基本API演示
上一篇发布了近期的面试总结-Mysql篇,最近在读《从Paxos到Zookeeper分布式一致性原理与实践》的电子书,从上面学到不少,因此将部分api演示从头演练一遍形成demo代码。zookeeper初始化构造方法package com.coderman.zookeeper.clusterdemo.version2;import org.apache.zookeeper.Watche...原创 2020-02-10 17:12:43 · 299 阅读 · 0 评论 -
zookeeper的数据结构&操作命令
前面一篇介绍了基于win10 64位系统搭建的zookeeper的伪集群,由5个节点组成的,因此我们这里为了后面的文章介绍一下zookeeper的数据结构以及一些操作运维相关的命令。1.zookeeper的数据结构描述ZooKeeper提供的名称空间非常类似于标准文件系统。名称是由斜线(/)分隔的一系列路径元素。ZooKeeper名称空间中的每个节点都由一个路径标识。zookeeper中...原创 2020-02-08 16:56:47 · 751 阅读 · 0 评论 -
win10搭建zookeeper3.4.14版本伪集群实战
前面两篇博客介绍了分布式相关的一些话题以及对zookeeper的一些理解。本篇博客记录基于win10系统搭建zookeeper3.4.14版本的伪集群,并为后面的实战做环境基础准备。一、依赖环境准备1.java JDK安装2.zookeeper 3.4.14.tar.gz3.在D盘新建目录:D:\programefiles\zookeeper二、环境安装配置1.解压zookeepe...原创 2020-02-07 18:42:36 · 639 阅读 · 1 评论 -
分布式系统需要解决的几大问题
架构演进中单体架构的高难度演进和技术升级我可能没有经历过,目前很多场景很多需求,都需要分布式系统去解决,不过大多数情况下我们可能不需要使用分布式相关的服务,但是业务的发展可能需要我们提前了解相关的技术作为技术储备,随时迎难而上。本篇文章作为分布式理论的一篇随笔完全自己手敲去理解分布式系统需要解决的问题,后面可能会深入某些分布式系统做一些理论上的阐述。一、节点信任分布式系统的特性导致每个处于...原创 2020-02-06 18:16:06 · 3705 阅读 · 0 评论