分布式
文章平均质量分 92
程序员顺仔
个人微信号 zs6105326
公众号 程序员顺仔和他的朋友们
欢迎志同道合之士一起交流
展开
-
一款强大的API接口文档管理工具(Smart-Doc + Torna)
Smart-Doc + Torna的生成和管理接口文档解决方案只需写好注释、规范代码,就能通过对注释和实体类的解析来生成示例详尽的接口文档,适用范围很大;由于其对代码零侵入的特性,不用改动业务代码就能使用,对旧代码也很友好。原创 2022-12-20 12:00:30 · 2686 阅读 · 0 评论 -
如何组织一场JAVA技能大练兵
近期,公司为了锻炼开发人员技能,举办了一场涵盖多个技术线的技能大练兵,我有幸受邀负责java技术方向的出题和评审工作。下面从以下几个方面回顾下整个过程:题目设计程序要求测试方法题目设计题目设计主要考虑以下几点:技术演进需求: 在公司系统云迁移的战略背景下,我们的应用即将从原来传统的虚拟机部署向PAAS云环境进行大规模迁移,需要开发人员掌握云环境的开发技能,应用开发框架需要从原来的SpringMVC+dubbo升级为SpringCloud服务治理框架。新老员工兼顾: 目前公司的开发人原创 2021-01-02 15:12:57 · 165 阅读 · 0 评论 -
多地多活与单元化架构
背景在业务发展到一定阶段之后,任何因故障而导致的服务中断都会带来巨大的损失。为了提高系统的伸缩能力与高可用能力,我们都不断的在努力消除系统单点瓶颈。如使用应用集群是为了解决服务层的单点问题,使用主从数据库是为了解决数据库层面的单点问题。尽管我们使用微服务架构,很好的解决了服务治理与监控问题,使得少数服务器出现故障仍不影响整体服务质量。但是由于所有的设备都存放在同一个机房内部,对于机房级的故障是无法承受的,如机房断电、火灾、地震等,造成的后果是灾难性的。虽然机房内部很好的解决了单点故障,但是机房本身却是单原创 2020-11-03 11:28:41 · 1294 阅读 · 6 评论 -
分布式事务的概念及实现方案
基本概念事务由多个计算任务构成的一组具有明确边界的工作集合。事务当中可能包括接口访问、网络通信、数据获取和处理。严格的事务实现应该具备具有原子性、一致性、隔离性、持久性四个特性。原子性(Atomicity):一个事务中的任务要么全部完成,要么全部失败。没有中间状态。隔离性(Isolation):不同事务之间的操作互不影响,并发的事务其中间状态对其他事务不可见。持久性(Durability):事务一旦完成,则状态永久有效。一致性(Consistency):事务涉及的资源或者数据在事务前后遵循某种原创 2020-10-27 19:28:37 · 698 阅读 · 0 评论 -
聊聊跨域的原理与解决方法
背景在最近的项目中,遇到这样一个场景:合作方开发H5页面并部署在合作方的服务器上,但页面中嵌入了我方的SDK,SDK会直接调用我方的接口,如下图:但是控制台中却会收到如下报错:Access to XMLHttpRequest at 'http://example1.com/test' from origin 'http://example2.com' has been blocked by CORS policy: Response to preflight request doesn't pass原创 2020-06-20 23:48:44 · 1411 阅读 · 0 评论 -
搞懂dubbo的SPI扩展机制
引言SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。在谈dubbo的SPI扩展机制之前,我们需要先了解下java原生的SPI机制,有助于我们更好的了解dubbo的SPI。java原生的SPI先上例子:定义接口Animal :public interf原创 2020-06-14 12:57:11 · 414 阅读 · 1 评论 -
基于事件驱动架构的用户成长体系
背景概述用户成长体系通俗的来讲就是会员经验金币系统,通过量化的方式来衡量用户对平台的忠诚度、共享度等,同时提供一系列的激励机制,刺激用户留在平台上。简单来讲,成长体系的作用就是“获客”、“活客”。对于用户来说,一个好的用户成长体系能够提升用户的主动活跃,用户也可以从体系中获得成就感、特权等利益。比如京东的京豆可以用来抵扣下次消费,QQ超级会员能让用户享受不一定的尊贵体验。对于平台来说,通过用户成长体系可以了解用户对产品的使用情况,有助于了解用户的组成情况,可以作为后面精细化运营的基础。同时,成长原创 2020-06-07 18:19:56 · 344 阅读 · 0 评论 -
Netty实现自定义通信协议
概述在网络编程中,无论使用netty还是其它的socket通讯框架,都是通过TCP或UDP传输二进制流。发送方把要发送的对象转化成二进制流发送出去;接收方把接收到的二进制流转化为对象进行处理。为了能让接收方和发送方能对同一个二进制流有相同的认识,双方必须提前约定好一个协议,即对象如何转化为二进制流,二进制流如何转化为对象,这样通信双方才不会产生误解。自定义通信协议在 easy-im 项目中...原创 2019-03-10 11:39:56 · 2709 阅读 · 0 评论 -
easy-im:一款基于netty的即时通讯系统
介绍easy-im是面向开发者的一款轻量级、开箱即用的即时通讯系统,帮助开发者快速搭建消息推送等功能。基于easy-im,你可以快速实现以下功能:+ 聊天软件+ IoT消息推送基本用法项目分为easy-im-client、easy-im-server、easy-im-common三个模块。服务端:执行mvn package后生成easy-im-server.tar.gz,解压后至./...原创 2019-01-27 22:38:37 · 728 阅读 · 0 评论 -
ZooKeepe系列(1)--分布式系统的基石
分布式架构有以下几点普适性的共性需求: 1. 提供集群的集中化的配置管理功能,可以不重启就让新的配置参数生效,类似与配置中心 2. 简单可靠的集群节点动态发现机制,便于动态发现服务,动态扩展节点 3. 简单可靠的leader选举机制 4. 提供分布式锁 zookeeper的数据结构整体上可以看作一颗目录树,其中每个节点被称作ZNode...原创 2018-09-21 20:16:10 · 192 阅读 · 0 评论 -
ZooKeepe系列(2)--基于ZooKeeper实现简单的配置中心
ZooKeeper节点的类型分为以下几类: 1.持久节点:节点创建后就一直存在,直到有删除操作来主动删除该节点 2. 临时节点:临时节点的生命周期和创建该节点的客户端会话绑定,即如果客户端会话失效(客户端宕机或下线),这个节点自动删除 3. 时序节点:创建节点是可以设置这个属性,ZooKeeper会自动为给定的节点加上一个数字后缀,作为新的节点名。数字后缀的范围是...原创 2018-09-21 20:03:14 · 484 阅读 · 0 评论 -
ZooKeepe系列(3)--基于ZooKeeper实现主从协作
主-从模式的模型中,主要包括三个角色:主节点:主要负责监视新的节点和任务,分配任务给可用的从节点;从节点:通过注册自己,确保主节点看到它们可以执行任务,收到主节点分配的任务后,执行并记录状态;客户端:创建新的任务并等待系统响应。1.Zookeeper节点介绍现通过ZooKeeper的API完成简单的主从协作。在此之前,需了解下ZooKeeper中节点的基本概念。节点的类型分为...原创 2018-09-26 14:01:29 · 597 阅读 · 0 评论