分布式开发
文章平均质量分 87
魏小言
BAT资深工程师,Cloud Native 拥护者,敏捷实践者,坚守开发一线打磨工匠技艺的架构师。对基础架构和微服务有丰富的研究和实践。微信群请私信博主
展开
-
你知道系统模块之间如何聊天吗?——摊牌了,不装了,就是这样聊......「建议关注收藏!!架构师养成必备」
文章目录模块间的交互模块间交互方式RestfulRpc中间件如何选型Q&A附录模块间的交互 这个主题的提出,是想归类梳理一下在架构设计中,各组件模块如何交互,及交互方式的异同,如何取舍!模块间交互方式 模块间的交互方式都有哪些呢?首先,明确下主题范围,模块间。指系统内部各模块之间,不包含系统服务于外界耦合部分。 主要的模块间交互方式,常见的有三种:Restful、Rpc、中间件。下面来依次简单唠一下。Restful Restful 广义上讲是一种架构风格,不特指某种技术或框原创 2021-06-08 16:25:46 · 345 阅读 · 6 评论 -
ES为什么那么牛——Elasticsearch存储解析
文章目录ElasticsearchElasticsearch 架构文档型数据库索引结构时间复杂度空间复杂度Q&A附录本文仅针对ES存储部分进行解析,其他部分请关注后续博文,欢迎技术交流!Elasticsearch监控全家桶 ELK/EFK,其中的 E 就是 ES(Elasticsearch)。Elasticsearch「开发语言 Java」最早于 2010 年 2 月发布,是一款分布式可扩展的实时检索分析组件。它不仅是一款文档型数据库,也是基于全文搜索引擎 Apache Lucene 之上的一原创 2021-05-23 16:02:58 · 2784 阅读 · 6 评论 -
你真的会重试吗?——重试机制之二进制指数退避机制
Table of Contents重试机制重试的必要性重试前提重试策略重试策略分析二进制指数退避策略二进制指数退避策略实操过程二进制指数退避策略原理Q&A附录重试机制本文介绍系统设计中,常见的重试机制。重点介绍二进制指数规避策略,从原理至实操,希望能为您在日后架构设计中带来些帮助!重试的必要性在互联网系统中,不管是基础组件还是业务开发,都依赖这机器、网络、电信号、等硬件、软件,任何流程不能保证100%到位。在实际场景中,会有各种不同重试的场景,尤其是在分布式架构、微原创 2021-05-17 18:21:35 · 1397 阅读 · 3 评论 -
Consul分布式锁原理详解及实例
Consul分布式锁原理详解及实例现在大型系统为了保证服务高可用,都为分布式架构。Consul是一款较zookeepr、etcd等年轻的纯Goland分布式服务架构。其包含多个功能模块服务发现、检查健康、K/V存储、多数据中心等,这里就其分布式锁进行介绍。整体来讲,Consul分布式锁实现和其K/V存储的特性密切相关。K/V最常见的是Redis,其SetNx也可完成分布式锁的功能,这里暂不做介绍。Consul与Redis不同,其K/V依赖Session,可以说K/V->Session是多对一的关系原创 2021-05-01 17:13:10 · 1539 阅读 · 2 评论 -
Redis:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:缓存雪崩的解决方案...转载 2019-03-04 20:17:31 · 264 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
最近在梳理关于同步的一些知识,发现知识的海洋无边际,学无止境,这里借鉴以为大佬的文章梳理一下synchronized的底层实现原理。首先是,synchronized都有什么应用场景呢? 概括,进程同步:修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入...转载 2018-05-07 21:06:10 · 276 阅读 · 0 评论 -
ActiveMQ浅述
最近在看关于Spring源码深入解析的书,里面涉及到了MQ,之前在项目中都是和框架整合在一块或者有封装好的拿来用,这里单纯的介绍一下ActionMQ;首先,什么是Active MQ? Active MQ是Apache出品,最流行的,能力强劲的开源消息总线。这是百科给的官方介绍。具体点说,Active MQ,即Java消息服务(Java Message Service)应用程序接口,是一款面向...原创 2018-04-21 21:53:10 · 302 阅读 · 0 评论 -
谈谈高并发系统的限流
谈谈高并发系统的限流 开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。 缓存 缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。...转载 2018-04-10 11:25:57 · 238 阅读 · 0 评论 -
Https建立连接过程
思考问题的顺序学技术时,总是会问什么?这里也不例外,https为什么会存在,它有什么优点,又有什么缺点?为什么网站有的用http,有的用https?如果不能很好的回答,就往下看吧。http通信存在的问题容易被监听 http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的 被伪装...原创 2018-02-22 23:32:07 · 1310 阅读 · 0 评论 -
Jsonp跨域,Ajax浅述
最近在进行历史项目重构,前后端分离时候需要把接口封成jsonp,来解决域中的跨域问题。这里简单总结一波:开发中由于同源策略,在一个Service上的应用是访问不到另一个地址空间的资源的,所以在分布式应用中,需要进行跨域的操作,当然方法有很多,在前后分离中我们主要用的是jsonp解决这个问题。关于jsonp的一些简单使用,百科说的很清楚,抛个地址:https://baike.baidu.com/ite原创 2018-02-07 11:41:35 · 688 阅读 · 0 评论 -
解析nginx负载均衡
摘要:对于一个大型网站来说,负载均衡是永恒的话题。随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP、Citrix NetScaler、Radware等等,虽然可以解决问题,但其高昂的价格却往往令人望而却步,因此负载均衡软件仍然是大部分公司的不二之选。nginx作为webserver的后起之秀,其优秀的反向代理功能和灵活的负载均衡策略受到了业界广泛的关注。本文将以工业转载 2018-02-05 20:16:29 · 179 阅读 · 0 评论 -
Git文件操作
今天,遇到了新增远程Git平台文件的情景,这里顺便总结下关于Git 的文件操作,之前写过一篇博客关于在idea/eclipse其他编译器中常用的Git命令;http://blog.csdn.net/qq_34417408/article/details/78915053;有需要的可以戳进去看看;在git中有远程和本地之分,其中在远程和本地之间存在着跟踪关系,当跟踪关系存在时,那么你可以省略许多原创 2018-01-19 16:07:20 · 170 阅读 · 0 评论 -
Git远程分支、远程跟踪分支、本地分支浅述
Git-远程分支,远程跟踪分支,跟踪分支的区别最近在看git pro 3.5远程分支一节,结果被其中的远程分支,远程跟踪分支,跟踪分支这三个概念搞得有点困惑,看了几遍又结合英文版看了看,才明白其的区别以及其与本地分支的关系,在此说明一下。远程分支远程分支对应的英文为remote branch,其就是在远程仓库的普通分支,比如远程仓库上的master,自己在远程仓库创建的分支,以及自己推送到转载 2018-01-21 23:29:25 · 1187 阅读 · 0 评论 -
mysql中last_insert_id()
最近项目中遇到这个问题,总结一下,首先,用这个的环境是:在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数;如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能;在MySQL中,使用auto_increment类型的id字段作为表的主键。 通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做原创 2017-12-28 16:03:59 · 1221 阅读 · 0 评论 -
Mybatis的简介及主要Mapping的写法
最近项目里用到Mybtis,这里主要总结一下Mybatis的一些知识,很简单。分享出来:首先,在分布式大项目中一般都是(Mybits+Spring+Dubbo/JSF+redis/R2M),为什么呢? 接着往下看:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。优点:灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一原创 2017-12-28 11:41:41 · 6337 阅读 · 0 评论 -
Git操作用法
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。Git开发过程:Git有很多优势,其中之一就是远程操作非常简便。本原创 2017-12-27 18:14:02 · 201 阅读 · 0 评论 -
心跳检测
心跳检测的思路及代码 外网服务端保存内网服务端会话的有效性以及平台上监控所有内网服务端的网络状况,模仿心跳机制实现,这里在做一点叙诉,关于思路和具体实现。在很多的平台应用中,都有这样的需求,平台内包括多个子系统或者属于其管控范围内的其他平台,需要对这些系统进行统一的监控,来查看当前的运行状态或者其他运行信息,我们的应用也有这样的一个情况,需要再外网服务端(平台)上监控,其下运行的多个转载 2017-12-25 18:39:17 · 272 阅读 · 0 评论