使用RedisMQ 做一次分布式改造】的更多相关文章

引言 熟悉TPL Dataflow博文的朋友可能记得这是个单体程序,使用TPL Dataflow 处理工作流任务, 在使用Docker部署的过程中, 有一个问题一直无法回避: 在单体程序部署的瞬间会有少量 流量无法处理:更糟糕的情况下,迭代部署的这个版本有问题,上线后无法运作, 更多的流量没有得到处理. 背负神圣使命(巨大压力)的程序猿心生一计, 为何不将单体程序改成分布式:服务A只接受数据,服务B只处理数据. 知识储备: 消息队列和订阅发布作为老生常谈的两个知识点被反复提及,按照JMS的规范,…
Redis缓存采坑记 ​ 前言 ​ 这个其实应该属于分布式改造剧集中的一集(第一集见前面博客:http://www.cnblogs.com/Kidezyq/p/8748961.html),本来按照顺序来的话,不会这么快发布这篇博客.但是,因为这个坑让我浪费太多时间.这个情形和一年前我在另一个项目中试图优化mybatis时简直完全一致,即使拿出了源码来debug还是解决不了这个问题,网上搜索的方法全部尝试了一遍还是不行.足足浪费了两三天的时间,说想吐血一点都不为过...... 鉴于再次被坑的这么惨…
前言: ​ 好了,终于又开始播放分布式改造剧集了.前面一集中(http://www.cnblogs.com/Kidezyq/p/8748961.html)我们DIY了一个Hessian转发实现,最后我们也留下了一个展望方向:可以实现一个管理界面管理节点,实现简单的服务治理的功能.这一集我们接着继续DIY分布式锁. 第二集:分布式锁DIY 探索之路 ​ 由于业务互斥的需要,当前项目中实现了一个内存锁.锁的大致模型是分为锁类型和锁键值,只有当锁类型和键值都相同的时候,整个业务才互斥.但是必须提供一个…
第三集:分布式Ehcache缓存改造 前言 ​ 好久没有写博客了,大有半途而废的趋势.忙不是借口,这个好习惯还是要继续坚持.前面我承诺的第一期的DIY分布式,是时候上终篇了---DIY分布式缓存. 探索之路 ​ 在前面的文章中,我给大家大致说过项目背景:项目中的缓存使用的是Ehcache.因为前面使用Ehcache的应用就一台,所以这种单机的Ehcache并不会有什么问题.现在分布式部署之后,如果各个应用之间的缓存不能共享,那么其实各自就是一个孤岛.可能在一个业务跑下来,请求了不同的应用,结果在…
对基于请求的分布式消息树的分析 在MVC时有过滤器System.Web.Mvc.ActionFilterAttribute,它可以对action执行的整个过程进行拦截,执行前与执行后我们可以注入自己的代码,这是我们实现对请求做监控的前提,对于一个请求来说,如果它是从Get或者Post过来的,我们会在发起端将初始catContext进行链条式的传递,从第一个节点开始生成并传递,最后到尾结节,开始执行cat,生成新的context,将新的context回写到响应头,由上一个节点拿到这个响应头,开始写…
本文是对 Martin Kleppmann 的文章 How to do distributed locking 部分内容的翻译和总结,上次写 Redlock 的原因就是看到了 Martin 的这篇文章,写得很好,特此翻译和总结.感兴趣的同学可以翻看原文,相信会收获良多. 开篇作者认为现在 Redis 逐渐被使用到数据管理领域,这个领域需要更强的数据一致性和耐久性,这使得他感到担心,因为这不是 Redis 最初设计的初衷(事实上这也是很多业界程序员的误区,越来越把 Redis 当成数据库在使用),…
前方: 其实完成这个功能之前,我就在思考:是先把想法写了来,和大伙讨论讨论后再实现,还是实现后再写文论述自己的思维. 忽然脑后传来一个声音说:你发文后会进入发呆阶段. 所以还是静下心,让我轻轻地把代码撸完再说. 最近这几天,自己在大脑里演练过各种技术难点,解决方案,推敲了各种该解决的问题,觉的差不多了,才决定撸码. 忽然发觉,原来代码是可以写在大脑里的. 要是你看到一个员工坐着2天没写一行代码,说明人家是高手,正在大脑编程. 好,不扯,回正文! 传统ORM的二级缓存为何失效? 有些ORM会提供:…
前言 最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式.到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果. EQueue开源地址:https://github.com/tangxuehua/equeue EQueue相关文档:http://www.cnblogs.com/netfocus/category/598000.html EQueue Nuget地址:http://www.nuget.org/packages/eq…
转自:http://www.infoq.com/cn/news/2018/05/luojisiwei 方圆 曾先后在 Cisco,新浪微博从事基础架构研发工作.十多年一直专注于后端技术的研发,在消息通信,分布式存储等方向有着丰富的经验.个人技术兴趣广泛,主要专注 Go/Java/Python 等编程语言的发展,尤其是在云计算等前沿领域的应用. 一.改造的背景 得到最早的APP就是一个单体的PHP的应用,就是图中最大的黄色块,中间蓝色块代表不同模块.下面的黄色部分代表passport 和支付系统,…
本文是腾讯云TDSQL首席架构师张文在腾讯云Techo开发者大会现场的演讲实录,演讲主题是<TDSQL在银行传统核心系统中的应用实践>. 我是TDSQL架构师张文,同时也是TDSQL的开发人员之一.今天的分享内容主要包含四个部分,分别为银行行业现状介绍.核心系统分布式改造.TDSQL最佳实践和改造效果. 张文演讲现场 搜索关注"腾讯云数据库"官方微信,回复"1106张文"即可下载本视频演讲PPT. 一.关于TDSQL 银行数据库系统被外企垄断超过99%.…
作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司  大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平台的应用与引擎端开发 01 背景介绍 我们是联通医疗团队,一直践行 "服务医改,惠及民生" 的使命,全面驱动医疗健康产业数字化.智能化转型. 在调度系统选型初期,我们团队技术栈以 JVM 语言为主,由于 Airflow 的结构体系无法进行充分的改造和融合,因此在开源调度系统的选择上,我们主…
当今许多企业都有着技术架构的DataOps程度不够.二次开发成本高.迁移成本高.集群部署混乱等情况,团队在技术选型之后发现并不适合自己的需求,但是迁移成本和难度又比较大,甚至前团队还留下了不少坑,企业自有的开发能力又比较有限,导致后面的小伙伴上手难度高体验差. 俗话说"工具选得好,下班回家早:调度用得对,半夜安心睡",面对各种难点和痛点: 如何有效地评估数据调度工具? 如何平滑的过渡到Apache DolphinScheduler? 如何稳定高效的对已有的工具升级改造? 这几个问题是改…
http://www.cnblogs.com/LBSer/p/3390852.html 最近单位需要做自己的分布式监控系统,因此看了一些资料,其中就有google的分布式追踪系统dapper的论文:http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/zh-CN//pubs/archive/36356.pdf,结合自己的理解描述下这篇论文. 一.引子: 用户输入关键字后只要敲…
最近一直做项目的ATS改造,期间遇到了种种问题,各种坑都记录下来, 比如iOS版本.afnetwork版本.证书(是否为自签证书).域名验证.TLS版本等等,我们项目更复杂,还使用了域名到IP映射的路由表策略,在验证自签证书的时候各种配置host,这种需求在文章里就不赘述了,有相似需求的可以私下讨论: 有描述不对的地方,欢迎大神指正! 先鬼扯点儿小背景,不喜请略过黄色部分:) 关于ATS,简单说就是app使用的网络请求都必须走https,iOS9以后,此设置默认开启,项目中所有的http请求直接…
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的.       先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了...   其中有一个功能叫做领劵的订阅推送.什么是领劵的订阅推送?就是用户订阅了该劵的推送,在可领取前的一分钟就要把提醒信息推送到用户的app中.本来这个订阅功能应该是消息中心那边做的,但他们说这个短时间内做不了.所以让我这个负责优惠劵的做了-.-!.具体方案就是到具体的推送时间点了,coupon系统调用消息中心…
在开发中有些敏感接口,例如用户余额提现接口,需要考虑在并发情况下接口是否会发生问题.如果用户将自己的多条提现请求同时发送到服务器,代码能否扛得住呢?一旦没做锁,那么就真的会给用户多次提现,给公司带来损失.我来简单介绍一下在这种接口开发过程中,我的做法. 第一阶段: 我们使用的orm为xorm,提现表对应的结构体如下 type Participating struct { ID uint `xorm:"autoincr id" json:"id,omitempty"`…
    主要参考了: https://www.zhihu.com/question/21714205     https://www.zhihu.com/question/28296375  一.概述     所谓的灰度发布,在行业内叫做A/B Test,所以可以搜索一些这方面的关键词     下面是某公司的灰度发布流程,仅供参考. 一)经典总结1:     1)web页面灰度.按照ip或者用户id切流啊.具有随机性,可以控制比例    2)服务端灰度.考验主系分能力了,可以做逻辑切换开关,按照…
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 如何做全站采集? 很多同学加群都在问, 如何使用DotnetSpider做全站采集呢? 其实很简单, 只要你们想通爬虫的整个逻辑就能明白了.简而言之,步骤如下: 1. 使用指定URL下载HTML 2. 分析, 保存HTML数据 3. 从HTML中分析出符合规则的新的URL, 并用新URL重复 1,2,3步骤, 直到再也无法发现新的URL 逻辑是简单的, 但…
.net平台下,我目前部署过的均衡负载有两种方式(iis7和Nginx),以下以Nginx为例讲解web层的均衡负载. 简介:Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客.新浪播客.网易新闻等门户网站频道,六间房.56.com等,视频分享网站,Discuz!官方论坛.水木社区等知名论坛,豆瓣.YUPOO相册.海内SNS.迅雷在线等新兴Web 2.0网站. 据说Nginx能承受3万并发连接数,这一点没有测试,总之…
怎样做可靠的分布式锁,Redlock 真的可行么? https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html 本文是对 Martin Kleppmann 的文章 How to do distributed locking 部分内容的翻译和总结,上次写 Redlock 的原因就是看到了 Martin 的这篇文章,写得很好,特此翻译和总结.感兴趣的同学可以翻看原文,相信会收获良多. 开篇作者认为现在 Redi…
       虚拟化和容器化是项目云化不可避免的两个问题.虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化.而项目如果要支持容器化则需要做许多细致的改造工作.容器化相对于虚拟化的优势也相当明显,运行于裸机性能高,秒级启停容器,更不用说开发.测试.布署一致的环境(DevOps理念),以及上篇提到的微服务的能力.大家还可以找到各种文章来介绍容器化(Docker)的知识,这里我们就不一一赘述.下面我们会根据项目的实际情况,介绍下容器化改造会面临的问题和解决…
传统配置文件有什么缺点 如果修改了配置文件,需要重新打包发布,而且每个环境变量配置文件复杂. 分布式配置中心 将配置文件注册到配置中心平台上,可以使用分布式配置中心实时更新配置文件,统一管理,不需要重新打包发布 后面定义的所有相关配置文件信息:除了 server port  其他的不写在本地哦 什么是分布式配置中心 项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做到自动更…
一.概述 1.1 什么是分布式配置中心 常用分布式配置中心框架 二.Apollo阿波罗 2.1 Apollo特点 2.2 Apollo整体架构原理 2.3 Apollo Portol 环境搭建 Linux上 创建数据库 确保端口未被占用 执行启动脚本 使用Apollo配置中心 2.4 Apollo配置中心客户端集成 打入本地Maven仓库 Maven依赖信息 application.yml配置文件信息 修改环境 创建apollo-env配置文件信息 App信息 项目启动 监听服务器通知 2.5…
前言 在SOA.微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用回滚的系统设计一直是个难点.我所在的团队也遇到了这个问题,为解决这个问题上,团队采用的是阿里开源的分布式中间件Fescar的解决方案,并详细了解了Fescar内部的工作原理,解决在使用Fescar中间件过程中的一些疑虑的地方,也为后续团队在继续使用该中间件奠定理论基础. 目前分布式事务解决方案基本是围绕两阶段提交模式来设计的,按对业务是有侵入分为:对业务无侵入的基于XA协…
分布式事务: 分布式事务是处理多节点上 的数据保持 类似传统 ACID 事物特性的 一种事物. XA:是一种协议,一种分布式事务的协议,核心思想是2段式提交. 1 准备阶段  2 提交阶段.XA协议是 Tuxedo 首先提出的 XA 的 原理 ,XA分了 几个角色,RM ,TM ,AP 等 RM:资源管理器.他记录着XA的 事物的全部 状态(在事物结算之前不会丢失). XA事物成功的流程: 1准备阶段 RM 告诉 相关的 几个 TM(事物管理器), 最一些事情,但是别提交.这时候修改数据还不可见…
1,什么是分布式配置中心 项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做到自动更新配置文件信息,解决以上问题 常用分布式配置中心框架 Disconf(依赖于zookpeer).Zookpeer().diamond.携程(阿波罗).Redis.xxl-conf Zookpeer保证配置文件信息实时更新 (事件通知) 大型互联网公司自己内部都有自己独立分布式配置中心独立RP…
转载自:公众号来源:码农翻身 作者:刘欣 Tomcat的锁 Tomcat是这个系统的核心组成部分, 每当有用户请求过来,Tomcat就会从线程池里找个线程来处理,有的执行登录,有的查看购物车,有的下订单,看着属下们尽心尽职地工作,完成人类的请求,Tomcat就很有成就感. 与此同时,它也很得意,所有的业务逻辑尽在掌握.MySQL算啥!不就是一个保存数据的地方吗? Redis算啥!不就是一个加快速度的缓存吗? 没有他们,我也能找到替代品,而我不可替代的, Tomcat经常这么想. 昨天MySQL偶…
使用 Xunit.DependencyInjection 改造测试项目 Intro 这篇文章拖了很长时间没写,之前也有介绍过 Xunit.DependencyInjection 这个项目,这个项目是由大师写的一个 xunit 基于微软 GenericHost 和 依赖注入实现的一个扩展库,可以让你更方便更容易的在测试项目里实现依赖注入,而且我觉得另外一点很好的是可以更好的控制操作流程,比如很多在启动测试之前去做的初始化操作,更好用的流程控制. 最近把我们公司的测试项目大多基于 Xunit.Dep…
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的.       先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了...   其中有一个功能叫做领劵的订阅推送.什么是领劵的订阅推送?就是用户订阅了该劵的推送,在可领取前的一分钟就要把提醒信息推送到用户的app中.本来这个订阅功能应该是消息中心那边做的,但他们说这个短时间内做不了.所以让我这个负责优惠劵的做了-.-!.具体方案就是到具体的推送时间点了,coupon系统调用消息中心…
ZooKeeper 的由来 PS:这一节不重要, 不感兴趣的小伙伴可以跳过 ZooKeeper 最早起源于雅虎研究院的一个研究小组,在当时,研究人员发现,在雅虎内部有很多的大型系统基本上都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点的问题,所有雅虎的开发人员就尝试开发了一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上.关于"ZooKeeper"这个项目的名字.也有一个故事,在项目开始初期,因为考虑到内部的很多项目都是用动物的名字…