RocketMQ 概览
简介Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件。相比于 Kafka,其拥有更好的实时性和消息可靠性。更适用于和 Money 相关的系统。它支持如下特性:
订阅/发布模式的消息
支持消费组模式的消费,即一个消费组集群内只有一个实例会收到那一条消息。
延时消息
只支持特定 Level 的延时设置,默认有 “1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h” 18个 Level。先扔到对应的延时队列,后台线程根据延时再将其挪到实际的 Topic 中。
顺序消息
只保证在单个 Broker 的单个 Queue 内是有序的,全局不保证有序。和 Kafka 一样.。
消息持久化
[主从同步 + 同步刷盘] 模式保证了持久数据的安全性。4.5 版本后加入 Dleger 更是支持了 主从自动切换。
消息过滤
RocketMQ的消费者可以根据Tag进行消息过滤,也支持自定义属性过滤。消息过滤目前是在Broker端实现,减少了r无用消息的网络传输。
消息回溯
已消费过 ...
从 VPS 到科学上网一气呵成
起因最近自己的香港阿里云服务器到期了,也不打算续期了,是在太贵。最低配一年一千多,其实我也没啥事要做,再续期的话就不划算了,遍放弃了。但是,科学上网的需求还是有的啊。于是便想要买个 VPS 自己整个跳转用用,对于这个 VPS 我只有两个要求:
便宜,一定要便宜!!!!毕竟自己需求较小,花多了钱觉得不划算
流量要不限量。(虽然我也不咋用,但是我就是想要不限量)
VPS 购置挑选 VPS首先我是按照自己的要求 google 了一番合适的 VPS 的,有下面几个链接比较有用:
2019 年最好的国外 VPS 推荐
10美元以下国内VPS/美国VPS推荐
老左常用国内/国外便宜VPS主机商家推荐整理
当然,按照我的要求,我选择了 BuyVM 家最便宜的一个 VPS。配置收费如下:
$2 USD/Month,年付更优惠:$18.68 USD/Year ,支持支付宝付款
流量不限
512M 内存
10G 存储
KVM 架构
1 核 CPU
这个配置用来部署一些小工具和用来科学上网是足够了。(这个,有个比较坑的地方就是,他的网速貌似不是很稳定,下载 ...
记一次 Gradle Build 问题分析
问题出现一次项目更新后,发现项目无法正常 build 了,出现如下报错:
12error: cannot access DoNotMock class file for com.google.errorprone.annotations.DoNotMock not found
问题定位
Review 代码更新,寻找可疑点
这一步 review 没有发现什么特殊的改动,只是更改了几个 proto 文件的定义。但是回退代码后却又能正常 build,所以说明构建失败的确是此次更新引入的问题。
根据报错信息寻找问题根源
寻找错误包
看错误是类找不到的问题,那么首先确定这个类是哪个包的;Google 了下,该类出现在 error-prone , 并且发现 DoNotMock 从 2.3.0 开始就被移除掉了,相关讨论见 GITHUB
12345 <dependency> <groupId>com.google.errorprone</groupId> <artifactId>error_prone_annota ...
OTA 项目知识
名词解释
OTAOnline Travel Agency:在线旅游(OTA,全称为Online Travel Agency),是旅游电子商务行业的专业词语。
指“旅游消费者通过网络向旅游服务提供商预定旅游产品或服务,并通过网上支付或者线下付费,即各旅游主体可以通过网络进行产品营销或产品销售”。
LCC Low-cost carrier:低成本航空公司(廉航) List of LCC
PNR Passenger Name Record:旅客订座记录,它反映了旅客的航程,航班座位占用的数量,及旅客信息。适用民航订座系统
GDS Global Distribution System: 全球分销系统,是应用于民用航空运输及整个旅游业的大型计算机信息服务系统。
通过GDS,遍及全球的旅游销售机构可以及时地从航空公司、旅馆、租车公司、旅游公司获取大量的与旅游相关的信息,从而为顾客提供快捷、便利、可靠的服务。
目前主要的 GDS。1A-Amadeus、1B-Sabre/Abacus、1E-TravelSky(中航信)、1G-伽利略。
CRSComputer Reserv ...
Drone 初探
简介Drone 是一个基于 Docker 的 CI/CD 工具,其所有编译、测试的流程都在 Docker 容器中进行。
其主要核心应该就是 configuration as a code + docker 了。每个项目下都需要定义一个 yml 配置文件,默认为 .drone.yml ,
在该配置文件中可自定义 Pipelines ,配置中的每一个 Pipeline 步骤都是在一个独立的 Docker 容器中自动执行的。
并且 Drone 现在已默认无缝集成了多种代码管理平台,目前有如下:
GitHub
Bitbucket
GitLab
Gitea
Gogs
后面我会以集成 Github 为例来说明下我利用 Drone 自动将自己的 Github Pages 项目打包部署到自己服务器上的例子。
运行 Drone 准备Drone 包含两个服务
drone-server:负责后台管理界面以及调度
drone-agent:负责具体的任务执行
所以,安装的时候最好统一安装管理咯,这边使用 docker-compose 来进行编排安装管理。
其他的一些核心概念的学习可以参考下 ...
Flink 入门教程
大数据处理的应用场景大数据是近些年才出现的吗,人们是近些年才发现大数据的利用价值的吗?其实不然,早在几十年前,数学分析就已经涉猎金融行业了,人们依托于金融和数学知识来建立数学模型,利用金融市场所产的数据来预测金融市场产品收益同风险波动的关系。
到如今,互联网也发展了好些年了,越来越多的数据产生(用户浏览数据、搜索记录、出行记录、消费记录;农作物的成长观察记录;病人的医疗记录等),各行业也开始慢慢的重视起这些数据记录,希望通过对这些数据的分析处理从而得到相应的利益和研究价值。
简单举几个例子,大数据处理可适用在在如下一些场景:
医疗大数据、看病更高效(病例病理分析、基因数据分析)
电商大数据、精准营销法宝(杀熟、哈哈哈哈或)
零售大数据、最懂消费者(用户画像,精准推送)
金融大数据、理财利器 (大数据选股)
交通大数据、畅通出行 (城市大脑)
……
大数据处理架构各行各业都开始了大数据之路,大量的数据处理,靠人力那是靠不住的,得依靠计算机来。那这自然是少不了程序猿的。那么程序员GG们是如何简洁高效的处理利用这些大数据的呢?
好比普通的web服务应用,有其对于的微服务架构一样,大数 ...
项目复盘思考
对自己所参与过的事物做个复盘是个好习惯,能让自己对事物有个更深的了解。比如说,读了一本书,那么这个时候你需要回去思考:这本书讲了些啥,对你有何影响;又或者,你参与了一个活动,你完了后,你也可以对其进行复盘,思考下这个活动的意义,这个活动是让你增加见识了还是让你放松心情了等;再或者,你参与了一个项目,这个时候还是可以复盘,考虑项目的进展中的难点等。其实复盘,就是对自己经历过的事物进行思考总结。是一个很好的自我矫正升华的方式。
下面我以一个程序员参与的项目的复盘来简要说明下,复盘过程中可能思考的问题和方向。
抛出问题
为什么要做这个项目?
项目是怎么选型的?
项目的规模(数据量、并发量、增量)?
项目中遇到了什么难点?是如何解决这些问题的?
项目还有什么不足?有什么解决方案?
问题解答这里以之前我做过的一个出单项目为例子简单说一下可能的问题思考总结。
为什么要做这个项目面对日益增加的互联网合作伙伴对接平安的出单系统,原有的系统已经无法完全满足与日俱增出单压力。对此,针对保险单较为单一的投保,分离业务,做成一个互联网出单系统。快速响应合作伙伴的出单需求.
项目是怎么选型的Spring ...
中国灾害预警爬取解析
有获取灾害信息提醒的需求,但是发现并没有开发的API 。已有的API都需要付钱。
天气预报API,可以看知乎的这边文章。网上的天气 API 哪一个更加可靠?
里面的普通的天气预报部分免费,但是灾害预警的API都是需要收费的。于是自己去摸索了。
最后通过发F12发现了中国天气网中可用的请求:
http://www.weather.com.cn/data/alarm_xml/alarminfo.xml
顺便写了下解析使用工具,如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117@Data@XmlRootElement(name = "Aler ...
定位CPU异常抖动---tomcat热部署的坑
问题及其罪魁祸首WEB服务器: apache-tomcat-8.0.33
JDK: jdk1.8.0_66
**操作系统: Linux SHB-L0064049 2.6.32-642.6.2.el6.x86_6 **
运维反馈CPU抖动异常,如下。
CPU时不时的会从0%抖动到50%,定位到时tomcat的热部署导致的问题。最终通过显式的加上reloadable=“false” 的配置解决了该问题。
注: 这里有一个坑,tomcat 的热部署默认是关闭的,具体请看[(文档)[http://tomcat.apache.org/tomcat-8.0-doc/config/context.html]] 中的reloadable说明, 然而我的服务器并没有显示配置reloadable 为true,tomcat却还是执行了对应的热部署相关的行为!
下面说说定位流程。
问题定位
查看服务进程的ID
ps aux | grep webAppName
定位占用CPU高的线程
top -H -p pid
查看线程堆栈123456789101112131415161718[root@S ...
请求响应慢问题排查
问题描述简要说明下,系统是一个微信第第三方平台,用于托管微信公众号和小程序的。
在一个普普通通的晚上,19点开始有公众号管理员向我们反馈,托管在我们平台的公众号一直提示 “该公众号提供的服务出现异常,请稍后再试“。
问题排查验证问题自己去对应的公众号验证,发送消息,确确实实提示”该公众号提供的服务出现异常,请稍后再试“,影响到了公众号的正常服务。并且每次都是这个返回,说明服务其实是普遍性的异常了(这点其实挺重要,不过当时没引起注意)。
查看WEB服务日志异常日志验证问题后,首先当然是去看看日志(后续的日志和步骤都是事后整理的,并不完全和当时生产一致)是否异常,发现此时后台日志有不少的报错(也有对应的邮件监控通知),异常如下:
错误1:
12345678910111213ava.io.IOException: APR error: -32 at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:291) at org.apache.coyote.ht ...