摘要:高可用背景介绍 高并发、高可用是互联网分布式系统架构设计中必须考虑的因素之一。 首先来说说高并发,啥是高并发,怎样才算是高并发。个人认为在衡量一个业务系统的并发能力,需要有一个维度,其中最重要的两个衡量标准是业务复杂度和硬件配置(cpu、内存、磁盘、带宽、网卡)。高并发的本质并不是一个数字这么简单, 阅读全文
posted @ 2019-12-10 10:15 胡峻峥 阅读 (79) 评论 (0) 编辑
摘要:前言 在分布式系统中,http服务调用少不了HttpClient工具类。相信大家使用apache的HttpClient进行http的交互处理已经很长时间了,而httpclient内部其实使用了http连接池,想必大家也没有关心过连接池的管理。事实上,通过分析httpclient源码,发现它很优雅地隐 阅读全文
posted @ 2019-10-08 00:44 胡峻峥 阅读 (1646) 评论 (2) 编辑
摘要:背景 最近接手了一个系统,其功能都是查询。查询分了两种方式,一种是公司集团提供的查询能力,支持全国各个省份的查询,但是业务高峰期时服务响应比较慢;另外一种是各省的分公司都分别提供了对应的查询能力,但是服务质量相对较差,业务高峰期服务超时较多,而且分公司系统升级时也会影响服务质量。为了提升服务查询的成 阅读全文
posted @ 2019-09-23 09:04 胡峻峥 阅读 (220) 评论 (0) 编辑
摘要:国际化信息理解 国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language" 阅读全文
posted @ 2019-09-16 09:09 胡峻峥 阅读 (745) 评论 (0) 编辑
摘要:Java + robotframework + seleniumlibrary 使用Robot Framework Maven Plugin(http://robotframework.org/MavenPlugin/)执行自动化测试 chromedriver下载: http://chromedri 阅读全文
posted @ 2019-08-11 15:58 胡峻峥 阅读 (252) 评论 (0) 编辑
摘要:背景 目前开发过程中,按照公司规范,需要依赖框架中的缓存组件。不得不说,做组件的大牛对CRUD操作的封装,连接池、缓存路由、缓存安全性的管控都处理的无可挑剔。但是有一个小问题,该组件没有对分布式锁做实现,那就要想办法依靠缓存组件自己去实现一个分布式锁了。 什么,为啥要自己实现?有现成的开源组件直接拿 阅读全文
posted @ 2019-08-05 08:43 胡峻峥 阅读 (1163) 评论 (0) 编辑
摘要:上一篇(基于zookeeper实现分布式配置中心(一))讲述了zookeeper相关概念和工作原理。接下来根据zookeeper的特性,简单实现一个分布式配置中心。 配置中心的优势 1、各环境配置集中管理。 2、配置更改,实时推送,jvm环境变量及时生效。 3、依靠配置变更,动态扩展功能,减少二次上 阅读全文
posted @ 2019-06-06 16:43 胡峻峥 阅读 (889) 评论 (5) 编辑
摘要:最近在学习zookeeper,发现zk真的是一个优秀的中间件。在分布式环境下,可以高效解决数据管理问题。在学习的过程中,要深入zk的工作原理,并根据其特性做一些简单的分布式环境下数据管理工具。本文首先对zk的工作原理和相关概念做一下介绍,然后带大家做一个简单的分布式配置中心。 zookeeper介绍 阅读全文
posted @ 2019-05-19 09:07 胡峻峥 阅读 (1273) 评论 (3) 编辑
摘要:前两篇(Spring MVC源码——Root WebApplicationContext 和 Spring MVC源码——Servlet WebApplicationContext)讲述了springmvc项目创建上下文的过程,这一篇带大家了解一下springboot项目创建上下文的过程。 Spri 阅读全文
posted @ 2019-05-13 09:13 胡峻峥 阅读 (608) 评论 (0) 编辑
摘要:上一篇笔记(Spring MVC源码——Root WebApplicationContext)中记录了下 Root WebApplicationContext 的初始化代码.这一篇来看 Servlet WebApplicationContext 的初始化代码 DispatcherServlet 是另 阅读全文
posted @ 2019-05-07 13:16 胡峻峥 阅读 (501) 评论 (3) 编辑
摘要:Spring MVC源码——Root WebApplicationContext 打算开始读一些框架的源码,先拿 Spring MVC 练练手,欢迎点击这里访问我的源码注释, SpringMVC官方文档一开始就给出了这样的两段示例: WebApplicationInitializer示例: web. 阅读全文
posted @ 2019-05-06 15:22 胡峻峥 阅读 (842) 评论 (2) 编辑
摘要:一、前言 最近做了电子发票的需求,分省开票接口和发票下载接口都有一定的延迟。为了完成开票后自动将发票插入用户微信卡包,目前的解决方案是利用线程池,将开票后插入卡包的任务(轮询分省发票接口,直到获取到发票相关信息或者轮询次数用完,如果获取到发票信息,执行发票插入微信卡包,结束任务)放入线程池异步执行。 阅读全文
posted @ 2019-04-06 23:08 胡峻峥 阅读 (636) 评论 (3) 编辑
摘要:一、Spring异步调用底层原理 开启异步调用只需一个注解@EnableAsync AsyncConfigurationSelector的作用是从两个异步配置类中选择一个来完成底层异步代理的工作。这个两个配置类分别是AspectJAsyncConfiguration、ProxyAsyncConfig 阅读全文
posted @ 2019-03-18 17:50 胡峻峥 阅读 (1085) 评论 (0) 编辑
摘要:一、引入依赖 二、PDF转PNG代码 三、PNG中文方块乱码 查看linux服务器上的字体库如下。 转换后的PNG如下。 日志中打印出类似这样的日志(例:Using fallback XXX for CID-keyed font STSong-Light),就说明系统没有安装STSong-Light 阅读全文
posted @ 2019-03-10 23:50 胡峻峥 阅读 (1932) 评论 (0) 编辑
摘要:一、前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFactoryBean创建的代理Bean的区别。 二、基本测试代码 测试实体类,在BPP中创建BppTest 阅读全文
posted @ 2019-03-03 00:50 胡峻峥 阅读 (1309) 评论 (6) 编辑
摘要:前言 之前研究了一下如何使用ScheduledThreadPoolExecutor动态创建定时任务(Springboot定时任务原理及如何动态创建定时任务),简单了解了ScheduledThreadPoolExecutor相关源码。今天看了同学写的ThreadPoolExecutor 的源码解读,甚 阅读全文
posted @ 2019-02-12 14:13 胡峻峥 阅读 (163) 评论 (0) 编辑
摘要:一、前言 上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝。分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件。因为是多省份,服务器、文件名规则、数据规则都不一定,所以要做成可配置是有一定难度的。数据规则这块必须强烈要求统一,服务器、文件名规则都可以从配置中心去读。每新增 阅读全文
posted @ 2019-02-07 22:02 胡峻峥 阅读 (5617) 评论 (2) 编辑
摘要:一、前言 最近负责支付宝小程序后端项目设计,这里主要分享一下用户会话、接口鉴权的设计。参考过微信小程序后端的设计,会话需要依靠redis。相关的开发人员和我说依靠Redis并不是很靠谱,redis在业务高峰期不稳定,容易出现问题,总会出现用户会话丢失、超时的问题。之前听过JWT相关的设计,决定尝试一 阅读全文
posted @ 2019-01-20 00:25 胡峻峥 阅读 (3595) 评论 (3) 编辑
摘要:一、前言 最近带着两个兄弟做支付宝小程序后端相关的开发,小程序首页涉及到很多查询的服务。小程序后端服务在我司属于互联网域,相关的查询服务已经在核心域存在了,查询这块所要做的工作就是做接口中转。参考了微信小程序的代码,发现他们要么新写一个接口调用,要么新写一个接口包裹多个接口调用。这种方式不容易扩展。 阅读全文
posted @ 2019-01-10 18:42 胡峻峥 阅读 (936) 评论 (2) 编辑
摘要:前言 之前读过一些类的源码,近来发现都忘了,再读一遍整理记录一下。这次读的是 JDK 11 的代码,贴上来的源码会去掉大部分的注释, 也会加上一些自己的理解。 Map 接口 这里提一下 Map 接口与1.8相比 Map接口又新增了几个方法: 这些方法都是包私有的static方法; of()方法分别返 阅读全文
posted @ 2019-01-06 23:56 胡峻峥 阅读 (442) 评论 (1) 编辑
摘要:支付宝官方解密文档:https://docs.alipay.com/mini/introduce/aes 虽然是参考代码,但个人感觉太随意了。做了一些简单的修改,编译和逻辑都没有问题了。 解密报文示例。 阅读全文
posted @ 2018-12-27 13:19 胡峻峥 阅读 (739) 评论 (0) 编辑
摘要:一、前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数 阅读全文
posted @ 2018-12-26 13:51 胡峻峥 阅读 (4081) 评论 (12) 编辑
摘要:工程中的nginx配置 nginx配置详解参考:Nginx配置文件(nginx.conf)配置详解 include /home/xxx/opt/nginx/conf.d/mime.types; 参考:nginx proxy_pass和rewrite的区别 Nginx之proxy_redirect详解 阅读全文
posted @ 2018-12-14 13:26 胡峻峥 阅读 (2810) 评论 (0) 编辑
摘要:CacheManager基本配置 请参考博文:springboot2.0 redis EnableCaching的配置和使用 RedisCacheManager构造函数 RedisCacheManager需要一个 RedisOperations实例,一般是RedisTemplate。还有一个不必须的 阅读全文
posted @ 2018-12-10 15:42 胡峻峥 阅读 (3183) 评论 (0) 编辑
摘要:一、前言 为什么要设计kafka告警方案?现成的监控项目百度一下一大堆,KafkaOffsetMonitor、KafkaManager、 Burrow等,具体参考:kafka的消息挤压监控。由于本小组的项目使用的kafka集群并没有被公司的kafka-manager管理,所以只能自己简单做一个告警。 阅读全文
posted @ 2018-12-04 15:53 胡峻峥 阅读 (756) 评论 (0) 编辑
摘要:kafka-manager配置 最主要配置就是用于kafka管理器状态的zookeeper主机。这可以在conf目录中的application.conf文件中找到。 当然也可以声明为zookeeper集群。 另外也可以通过环境变量ZK_HOSTS来表示。 自定义kafka-manager功能,类似于 阅读全文
posted @ 2018-11-20 00:04 胡峻峥 阅读 (1619) 评论 (0) 编辑
摘要:一、前言 高效、合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑。接下来会介绍一下常用一些使用方式。 二、常用注解说明 三、定义校验分组 四、定义校验Bean 请自行参考:@Validated和@Valid区别 五、validator基本使用 这 阅读全文
posted @ 2018-11-13 18:56 胡峻峥 阅读 (4344) 评论 (0) 编辑
摘要:报错内容 None of the configured nodes are available elasticsearch.yml配置 Java客户端配置 ES客户端属性配置 问题追踪 在异常栈中定位到 org.elasticsearch.client.transport.TransportClie 阅读全文
posted @ 2018-11-12 18:37 胡峻峥 阅读 (969) 评论 (0) 编辑
摘要:一、前言 公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的。最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2。 二、现象 虽然生产环境有多个结点分散高并发带来的压力,但是消息中心上一周好多接入方接入,导致并发量一下就增多了, 阅读全文
posted @ 2018-11-09 20:50 胡峻峥 阅读 (5244) 评论 (0) 编辑
摘要:一、接口开关功能 1、可配置化,依赖配置中心 2、接口访问权限可控 3、springmvc不会扫描到,即不会直接的将接口暴露出去 二、接口开关使用场景 和业务没什么关系,主要方便查询系统中的一些状态信息。比如系统的配置信息,中间件的状态信息。这就需要写一些特定的接口,不能对外直接暴露出去(即不能被s 阅读全文
posted @ 2018-11-04 01:08 胡峻峥 阅读 (935) 评论 (0) 编辑