01 2017 档案

摘要:Elasticsearch简介 Elasticsearch (ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是,Lucene只是一个库。想要发挥其强大的作用,你需使用C#将其集成 阅读全文
posted @ 2017-01-09 21:07 yswenli 阅读(11916) 评论(14) 推荐(15) 编辑
摘要:消息推送服务 服务器推送目前流行就是私信、发布/订阅等模式,基本上都是基于会话映射,消息对列等技术实现的;高性能、分布式可以如下解决:会话映射可采用redis cluster等技术实现,消息对列可使用kafka等分布式消息队列方案实现。 APM.Server基于简单 和 实现。 部分代码如下: 1 阅读全文
posted @ 2017-01-09 20:12 yswenli 阅读(1195) 评论(0) 推荐(0) 编辑
摘要:APM测试 俗话说麻雀虽小,五脏俱全。apm虽然简单,但是可以实现单机高性能消息推送(可以采用redis、kafka等改造成大型分布式消息推送服务器)。 测试demo: 1 using System; 2 using System.Collections.Generic; 3 using Syste 阅读全文
posted @ 2017-01-09 20:12 yswenli 阅读(903) 评论(0) 推荐(0) 编辑
摘要:TCP通信解包 虽说这是一个老生长谈的问题,不过网上基本很少见完整业务;或多或少都没有写完或者存在bug。接收到的数据包可以简单分成:小包、大包、跨包三种情况,根据这三种情况作相对应的拆包处理,示例如下: 1 /******************************************** 阅读全文
posted @ 2017-01-09 17:58 yswenli 阅读(709) 评论(0) 推荐(0) 编辑
摘要:为什么使用异步 异步线程是由线程池负责管理,而多线程,我们可以自己控制,当然在多线程中我们也可以使用线程池。就拿网络扒虫而言,如果使用异步模式去实现,它使用线程池进行管理。异步操作执行时,会将操作丢给线程池中的某个工作线程来完成。当开始I/O操作的时候,异步会将工作线程还给线程池,这意味着获取网页的 阅读全文
posted @ 2017-01-09 17:58 yswenli 阅读(1315) 评论(1) 推荐(3) 编辑
摘要:数据持久化 Kafka大量依赖文件系统去存储和缓存消息。对于硬盘有个传统的观念是硬盘总是很慢,这使很多人怀疑基于文件系统的架构能否提供优异的性能。实际上硬盘的快慢完全取决于使用它的方式。设计良好的硬盘架构可以和内存一样快。在6块7200转的SATA RAID-5磁盘阵列的线性写速度差不多是600MB 阅读全文
posted @ 2017-01-05 13:01 yswenli 阅读(688) 评论(0) 推荐(0) 编辑
摘要:Kafka Producer消息发送producer直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发。为了帮助producer做到这点,所有的Kafka节点都可以及时的告知:哪些节点是活动的,目标topic目标分区的leader在哪。这样producer就可以直接将消息 阅读全文
posted @ 2017-01-05 13:01 yswenli 阅读(559) 评论(0) 推荐(0) 编辑
摘要:日志 有两个文件夹组成,my_topic_0和my_topic_1,每个文件夹里放着具体的数据文件,每个数据文件都是一系列的日志实体,每个日志实体有一个4个字节的整数N标注消息的长度,后边跟着N个字节的消息。每个消息都可以由一个64位的整数offset标注,offset标注了这条消息在发送到这个分区 阅读全文
posted @ 2017-01-05 13:01 yswenli 阅读(385) 评论(0) 推荐(0) 编辑
摘要:使用.net客户端连接到Kafka 这里推荐使用一个开源.net客户端:https://github.com/Jroland/kafka-net Producer 1 var options = new KafkaOptions(new Uri("http://SERVER1:9092"), new 阅读全文
posted @ 2017-01-05 13:01 yswenli 阅读(611) 评论(0) 推荐(0) 编辑
摘要:Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输 支持Kafka Server间的 阅读全文
posted @ 2017-01-05 13:00 yswenli 阅读(811) 评论(0) 推荐(0) 编辑
摘要:常用Message Queue对比 RabbitMQRabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。 阅读全文
posted @ 2017-01-05 12:59 yswenli 阅读(668) 评论(0) 推荐(0) 编辑
摘要:为什么要用Message Queue 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束 冗余 有时在处理数据的时候处理过程会 阅读全文
posted @ 2017-01-05 12:58 yswenli 阅读(881) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示