上一页 1 2 3 4 5 6 7 ··· 26 下一页
  2019年6月6日
摘要: 1. 前言 几年前,我就一直想着要设计一款自己的实时通讯框架,于是出来了TinySocket,她是基于微软的SocketAsyncEventArgs来实现的,由于此类提供的功能很简洁,所以当时自己实现了缓冲区处理,粘包拆包等,彼时的.net平台还没有一款成熟的即时通讯框架出来,所以当这款框架出来的时 阅读全文
posted @ 2019-06-06 11:07 程序诗人 阅读(6020) 评论(30) 推荐(26) 编辑
  2019年6月5日
摘要: 在最近设计服务治理模块中,涉及到如下的使用方式:abstract class mybase{ Map cache = Maps.newConcurrentMap(); abstract void add(); } class mya extends mybase{ public void add (){ ca... 阅读全文
posted @ 2019-06-05 21:05 程序诗人 阅读(153) 评论(0) 推荐(0) 编辑
  2019年4月17日
摘要: 客户端发送消息并同步获取结果,其实是违背Netty的设计原则的,但是有时候不得不这么做的话,那么建议进行如下的设计: 比如我们的具体用法如下: NettyRequest request = new NettyRequest(); request.setRequestId(UUID.randomUUID().toString()); ... 阅读全文
posted @ 2019-04-17 10:07 程序诗人 阅读(16449) 评论(1) 推荐(0) 编辑
  2019年3月15日
摘要: 压测机器: 100台docker redis集群:16个分片 在开始压测的半个小时中,一直很稳定,ops稳定在20w左右。但是接下来突然ops断崖式下跌,ops降到了3w以下。然后持续一段时间,直至变为0。 问题排查: 1. 检查docker docker都很健康,cpu占用率,内存占用率都正常,不到30%。网络状况也很好。 2. 检查mq mq也正常,响应时间没有被可以拉长 3. 检查redis... 阅读全文
posted @ 2019-03-15 15:52 程序诗人 阅读(702) 评论(0) 推荐(0) 编辑
  2019年3月8日
摘要: 1. 写作缘起 几年前,我在一家农业物联网公司,负责解决其物联网产品线。我们当时基于.net平台打造了一套实时数据采集系统,可以把数以百万级的传感器传送回来的数据采集入库并根据这些数据进行建模。在搭建这套实时数据采集系统的时候,高并发高可用被首次提出,同时要求系统不会有太大的时延。一旦有时延,也就意 阅读全文
posted @ 2019-03-08 20:22 程序诗人 阅读(4064) 评论(47) 推荐(23) 编辑
  2019年3月7日
摘要: 在Redis集群中,会有很多个分片,如果此时利用Jedis来操作此Redis集群,那么他会把数据路由到不到的分片上。而且如果动态的往集群中增加分片,也不会影响Jedis的功能。究竟是怎么做到的呢? 由于最近公司要集中迁移redis集群,也就是把旧集群的数据迁移到Redis Cluster中,就需要我们自己来整理数据。刚好我这里有个库存热点数据,我们叫做A吧,这个A在Redis集群中,每个分片上都有... 阅读全文
posted @ 2019-03-07 21:45 程序诗人 阅读(353) 评论(0) 推荐(0) 编辑
  2019年2月12日
摘要: 说到ByteBuf,我们并不陌生,官网给的解释为,一个可以进行随机访问或者是顺序访问的字节集合,它是NIO buffers缓冲的底层抽象。既然是底层抽象,那么我们就可以基于其衍生出很多的具体实现出来,事实上,netty中的很多缓冲组件都是基于此抽象类做的扩展。 随机访问索引 和普通的字节数据一样,B 阅读全文
posted @ 2019-02-12 18:21 程序诗人 阅读(1347) 评论(0) 推荐(0) 编辑
  2019年1月31日
摘要: 在设计netty的编解码器过程中,有许多组件可以选择,这里由于咱对Protostuff比较熟悉,所以就用这个组件了。由于数据要在网络上传输,所以在发送方需要将类对象转换成二进制,接收方接收到数据后,需要将二进制转换成类对象,由于这个操作在之前的文章中有讲解过:网络传输数据序列化工具Protostuf 阅读全文
posted @ 2019-01-31 15:53 程序诗人 阅读(321) 评论(0) 推荐(0) 编辑
  2019年1月18日
摘要: 在js编码过程中,经常会使用如上的语句来规避拿不到变量的问题。 比如:queryData:function () { var that=this; var param={}; for(var key in this.condition){ if(this.condition[key]){ ... 阅读全文
posted @ 2019-01-18 18:09 程序诗人 阅读(214) 评论(0) 推荐(1) 编辑
  2019年1月16日
摘要: 在使用基于TCP实现的各种组件的时候,我们经常会处理数据包。这数据包说来奇怪,从来不会丢失,也不会乱序,只会产生粘包。底层的机制是如何实现的呢?进来我们就来用简洁易懂的文字描述清楚。 在TCP数据包设计思想中,有两个比较重要的概念: Sequence Number: 顺序号,意即数据包的序号,主要用来解决数据包乱序问题。 Acknowledgement Number:确认号,意即数... 阅读全文
posted @ 2019-01-16 20:18 程序诗人 阅读(4953) 评论(0) 推荐(0) 编辑
  2018年12月29日
摘要: 前言 回调,顾名思义,回过头来调用,详细的说来就是用户无需关心内部实现的具体逻辑,只需要在暴露出的回调函数中放入自己的业务逻辑即可。由于回调机制解耦了框架代码和业务代码,所以可以看做是对面向对象解耦的具体实践之一。由于本文的侧重点在于讲解后端回调,所以对于前端回调甚至于类似JSONP的回调函数类的, 阅读全文
posted @ 2018-12-29 17:15 程序诗人 阅读(973) 评论(0) 推荐(0) 编辑
  2018年12月11日
摘要: 网上有很多关于ThreadLocal的文章,大部分都提到了多线程之间共享资源的问题。其实ThreadLocal和多线程之间一点关系都没有。如果有,我怕是它的名字改成ThreadShare是不是更合适呢?开个玩笑。从其名称ThreadLocal,我们就可以看出他应该是隶属于线程内部的资源。接下来就详细 阅读全文
posted @ 2018-12-11 09:25 程序诗人 阅读(243) 评论(0) 推荐(0) 编辑
  2018年12月5日
摘要: java项目有时候需要将一些静态文件拷贝到生成的test-class文件夹或者其他地方,虽然手动拷贝可以做到,但是很麻烦。今天主要讲解如何利用pom.xml进行动态的拷贝。 具体的配置信息如下,在dependencies节点后面追加build节点,用于进行资源拷贝操作: maven-resources-plugin 3.1.0 ... 阅读全文
posted @ 2018-12-05 10:25 程序诗人 阅读(617) 评论(0) 推荐(0) 编辑
  2018年11月30日
摘要: 一直在物色比较好用的网络传输数据序列化工具,看了诸如marshalling,protobuff等,但是均有一个共同特点,使用起来异常繁杂,有没有比较好用同时性能又不会太差的组件呢?答案当然是有的,那就是基于protobuff改造的protostuff,它拥有良好性能的同时,又免去了生成描述文件的烦恼 阅读全文
posted @ 2018-11-30 09:45 程序诗人 阅读(468) 评论(0) 推荐(0) 编辑
  2018年11月8日
摘要: 高并发的系统中,redis的使用是非常频繁的,而lua脚本则更是锦上添花。因为lua脚本本身执行的时候是一个事务性的操作,不会掺杂其他外部的命令,所以很多关键的系统节点都会用redis+lua来实现一致性的操作请求。但是在实际开发过程中,由于redis lua脚本调试难的问题,导致大量的时间耗费在了 阅读全文
posted @ 2018-11-08 14:52 程序诗人 阅读(3103) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 26 下一页