分布式日志系统

JerryXia 发表于 , 阅读 (2,160)
我们采用了一个经典的组合 logstash + elasticsearch + kibana。说明:多个独立的agent(Shipper)负责收集各应用不同来源的数据,中心agent(Indexer)负责汇总和分析数据,在中心agent前的Broker(使用redis实现)作为缓冲区,中心LogStash后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。Shipper表示日志发送者,在应用中使用NLog组件来发送日志数据;Broker作为远程agent... 阅读全文

如何保证Redis的高可用性

JerryXia 发表于 , 阅读 (3,997)
如何保证Redis的高可用性?我脑海里第一个想到的一个词是集群部署了,至于如何集群部署Redis服务,则有如下几种细节上不同的方案。Redis HA方案HA的关键在于避免单点故障及故障恢复,在Redis Cluster未发布之前,Redis一般以主/从方式部署(这里讨论的应用从实例主要用于备份,主实例提供读写,有不少应用是读写分离的,读写操作需要取不同的Redis实例,该方案也可用于此种应用,原理都是相通的,区别在于数据操作层如何封装),该方式要实现HA主要有如下几种方案:keepaliv... 阅读全文

Effective C# 原则50:了解ECMA标准

JerryXia 发表于 , 阅读 (1,717)
ECMA标准是C#语言所有功能的官方说明。ECMA-334定义了C#语言1.0的标准,你可以从The C# Programming Language这本书上学习C#2.0的计划(译注:现在已经不是计划了),这本书的作者是Anders Hejlsberg, Scott Wiltamuth, 和 Peter Golde (Addison-Wesley, 2003)。这本书是一个语言手册,而不是指南。它详细说明了这门语言书面定义的每一个功能。每一种语言都只一种标记,可以让你更加明白每一种语言的功... 阅读全文

Effective C# 原则49:为C#2.0做好准备

JerryXia 发表于 , 阅读 (1,839)
C#2.0,在2005年已经可以使用了,它有一些主要的新功能。这样使得目前使用的一些最好的实际经验可能会有所改变,这也会随着下一代工具的发布而修改。尽管目前你还可以不使用这些功能,但你应该这些做些准备。当Visual Studio .net2005发布后,会得到一个新的开发环境,升级的C#语言。附加到这门语言上的内容确实让你成为更有工作效率的开发者:你将可以写更好重用的代码,以及用几行就可以写出更高级的结构。总而言之,你可以更快的完成你的工作。C#2.0有四个大的新功能:范型,迭代,匿名方... 阅读全文

Effective C# 原则48:了解更多的工具和资源

JerryXia 发表于 , 阅读 (1,807)
对于C#以及.Net来说这是激动人心的时候。这些工具目前还是比较新的,整个社区都在学习如何使用这些工具。一些资源可以帮助你提高你的知识,以及为.Net和C#创建一个更大的知识社区。这些工具是我每天都向C#开发人员推荐的。关于C#实践的全部内容还在写作当中,跟进它们而且不断了解相关的内容。第一个应该在每一个C#开发人员的工具箱的工具是NUnit, 它可以在www.nunit.org网站上找到。NUnit是一个自动进行单元测试的工具,功能和JUnit很像。和其它大多数开发人员一样,我讨厌写测试... 阅读全文

Effective C# 原则47:选择安全的代码

JerryXia 发表于 , 阅读 (1,720)
.Net运行时已经设计好了,一些怀有恶意的代码不能渗透到远程计算机上并执行。目前一些分部式系统依懒于从远程机器上下载和执行代码。如果你可以通过Internet或者以太网来发布你的软件,或者直接从web上运行,但你须要明白CRL在你的程序集中的一些限制。如果CLR不是完全相信一个程序集,它会限制一些的行为。这些调用代码要有访问安全认证(CAS)。从另一方面来说,CLR强制要求基于角色的安全认证,这样这些代码才能或者不能在基于一个特殊的角色帐号下运行。安全违例是运行时条件,编译器不能强制它们。... 阅读全文

Effecitve C# 原则46:最小化与其它非托管代码的交互

JerryXia 发表于 , 阅读 (1,898)
在开发设计.Net时,MS所做的最聪明的修改之一就是他们意识到,如果没有办法整合已经存在的代码到新的.Net环境中,那没没有人会接受这个新的平台。MS知道,如果没有办法来利用已经存在的代码,这将阻止大家接受它。与其它非托管代码的交互是可以工作了,但这是可交互唯一可以拿来说一下的有利的地方。对于所有的交互策略,当操作流程在本地代码和托管代码之间的边界上进行传送时,都要求强制提供一些 编组的信号。同时,交互策略强迫开发人员必须手动的申明所有调用参数(译注:这里是说你根本不知道参数的数据类型,很... 阅读全文