基于.NET平台常用的框架整理澳门美高梅手机网站

题图

AntiXSS:微软官方预防跨站XSS脚本侵袭攻击的开源类库,它经过白名单机制举办内容编码。

未利用内网IP,导致苏醒缓慢

在配备集群时,我拔取了几台配置类似的同网段机器,但迅即里边一台机器操作系统没有加载内网网卡,为了偷一下懒,便径直利用了外网IP,集群是跑起来了,运行了一段时间也尚无什么样问题,但随着流量越来也大,终于有一天Master突然down掉了,我马上合计,ElasticSearch集群本身有着故障转移效果,即刻会分配一个Master节点,然后自己只须要把原先的Master节点重启即可,可是重启了后头,通过head页面查看恢复生机景况,发现集群长期处于黄色状态(有replica
shard丢失),而丢掉的shard一向处于未分配意况,并没有如我意料的:启动后,该节点可以引用在磁盘上的shard数据,上报给Master,不必要多少拷贝,立马苏醒为黄色状态。过了几分钟后,我发现苏醒的shard数正以减缓的进程扩大,便推导出那般的荒唐结论:ElasticSearch在某一台机器挂掉后,只会从primary
shard复制数据,固然节点快速复原,也不会复用该节点上的数据,假若是那种完成格局,我觉着那种恢复生机速度是不可能经受的,即刻发生了不可以持续利用下去的动机,当时的心理是极致懊丧的。

而ElasticSearch的使用是一定广泛的,我们熟稔的世界最通辽性交友网站也是运用它来贯彻搜索效果的,所以能够判明是自个儿的利用方式有难点,要么是自身选的本子不安宁,要么是其他的缘由,而稳定版一般出难点的几率不大,因而在换版本从前,须要找其他方面的来由,很久此前看过一篇google的slide,下边有一页介绍了分歧介质数据的传输速度:外网的传输速度在10ms级别,而内网却在20阿秒级,那种速度的分化便会促成以下多少个地点的震慑

  • 集群不能提供健康劳动:因为每个请求,ElasticSearch节点都会经过转载和综采多个进程,如若使用外网网卡,便会造成延迟大,访问量上不去,而流量到达一定程度后,集群很快便不能提供正常服务
  • 由于ES集群已经黔驴技穷正常服务,所以down机、復苏困难一名目繁多综合症的情景便会陆续发出

后续我将集群切到了内网中,再测试重启某一个节点,便不会再出新復苏一个节点须要半天的景况了。

slide

可以扩张新闻队列连串,如:Kafka是一种分布式的,基于揭橥/订阅的新闻系统。主要设计目的如下:
以时日复杂度为O(1)的方法提供音讯持久化能力,即便对TB级以上数量也能担保常数时间复杂度的拜访品质。
高吞吐率。固然在更加廉价的商用机器上也能到位单机协助每秒100K条以上新闻的传导。
帮助Kafka
Server间的消息分区,及分布式消费,同时确保每个Partition内的新闻顺序传输。
并且帮助离线数据处理和实时数据处理。
Scale out:支撑在线水平伸张。
RabbitMQ
RabbitMQ是运用Erlang编写的一个开源的音讯队列,本身扶助广大的情商:AMQP,XMPP,
SMTP,
STOMP,也正因如此,它非凡重量级,更契合于公司级的支出。同时已毕了Broker构架,那意味着音信在发送给客户端时先在中央队列排队。对路由,负载均衡或者数额持久化都有很好的支撑。
Redis
Redis是一个基于Key-Value对的NoSQL数据库,开发保养很活泼。即便它是一个Key-Value数据库存储系统,但它自己协助MQ作用,所以完全可以作为一个轻量级的连串服务来采用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录几遍执行时间。测试数据分为128Bytes、512Bytes、1K和10K三个例外尺寸的数据。实验表明:入队时,当数码相比较刻钟Redis的品质要高于RabbitMQ,而只要数据大小当先了10K,Redis则慢的不可能忍受;出队时,无论数额大小,Redis都突显出卓殊好的特性,而RabbitMQ的出队质量则远低于Redis。
ZeroMQ
ZeroMQ号称最快的音信队列系统,尤其针对大吞吐量的必要意况。ZeroMQ可以落到实处RabbitMQ不擅长的高级/复杂的队列,可是开发人员要求团结组合各种技艺框架,技术上的复杂度是对那MQ可以使用成功的挑战。ZeroMQ具有一个万分的非中间件的格局,你不须求安装和运作一个音信服务器或中间件,因为您的应用程序将饰演这些服务器角色。你只需求不难的引用ZeroMQ程序库,可以应用NuGet安装,然后你就可以笑容可掬的在应用程序之间发送新闻了。可是ZeroMQ仅提供非持久性的序列,也就是说假设宕机,数据将会丢掉。其中,推特的Storm
0.9.0从前的本子中默许使用ZeroMQ作为数据流的传导(Storm从0.9本子初阶还要协理ZeroMQ和Netty作为传输模块)。
ActiveMQ
ActiveMQ是Apache下的一个子项目。
类似于ZeroMQ,它亦可以代办和点对点的技艺完结队列。同时类似于RabbitMQ,它少量代码就足以火速地贯彻高级应用场景。
Kafka/Jafka
Kafka是Apache下的一个子项目,是一个高质量跨语言分布式发表/订阅音信队列系统,而Jafka是在Kafka之上孵化而来的,即Kafka的一个升级版。具有以下特征:疾速持久化,可以在O(1)的连串开发下展开音信持久化;高吞吐,在一台一般的服务器上既可以已毕10W/s的吞吐速率;完全的分布式系统,Broker、Producer、Consumer都原生自动协助分布式,自动完成负载均衡;协理Hadoop数据交互加载,对于像Hadoop的一律的日志数据和离线分析体系,但又要求实时处理的限制,那是一个卓有功用的解决方案。Kafka通过Hadoop的相互加载机制统一了在线和离线的音信处理。Apache
Kafka相对于ActiveMQ是一个百般轻量级的音讯系统,除了品质更加好之外,还是一个工作卓越的分布式系统。

犯了那样多错误基本上都是使用不当、以管窥天的由来,以为看了几许文档,就凭直觉可以臆想到系统的具备内容,造成了一而再难点的不断涌现,上面就相继说一下淌坑进程

Unity3D:微软全力以赴协助的机遇C#和JavaScript的跨平台游戏开发框架。

版权表明:
此作品先发于公众号程序员在深圳,搜索 studycode 即可关切
正文无需授权即可转发,转发时请务必注脚小编

Prism:微软开销的指向WPF和Silverlight的MVVM框架,通过效能模块化的思考,来讲复杂的业务职能和UI耦合性举办分离。

Master和DataNode未分离,导致集群不安宁

在ES集群中,节点分为Master、DataNode、Client等二种角色,任何一个节点都能够同时负有以上所有角色,其中比较紧要的角色为Master和DataNode:

  • Master紧要管理集群音信、primary分片和replica分片音讯、维护index新闻。
  • DataNode用来存储数据,维护倒排索引,提供数据检索等。

可以见到元新闻都在Master上面,如若Master挂掉了,该Master含有的兼具Index都不可能访问,文档中说,为了保证Master稳定,须求将Master和Node分离。而打造master集群可能会爆发一种名叫脑裂的难点,为了防患脑裂,须要安装最小master的节点数为eligible_master_number/2 + 1

脑裂的定义:
一旦您有2个Master候选节点,并安装最小Master节点数为1,则当互联网抖动或偶尔断开时,2个Master都会觉得另一个Master挂掉了,他们都被公推为主Master,则此时集群中存在多个主Master,即物理上1个集群成为了逻辑上的2个集群,而当其中一个Master再一次挂掉时,就算它过来后重临了原来的集群,在它当作主Master时期写入的数码都会丢掉,因为它上边维护了Index音信。

根据上述理论,我对集群做了如下改变,额外选择3个单身的机械作为Master节点,修改elasticsearch.yml配置

node.master = true
node.data = false
discovery.zen.minimum_master_nodes = 2

修改其余节点配置,将其安装为DataNode,最终挨个重启

node.master = false
node.data = true

活动网络和云总结:

  1. 集群搭建不成功
  2. 未选用内网IP,导致恢复生机缓慢
  3. 未利用队列及logstash,导致数据丢失
  4. Master和DataNode未分离,导致集群不安宁
  5. Logstash吞吐量难题
  6. Logstash怎么着创设Mapping
  7. head插件安装不当

NCrawler:其HTML处理引擎htmlagilitypack的的开源互连网爬虫软件。

集群搭建不成事

一初叶是在单机上玩ElasticSearch的,上生产环境肯定要动用它的集群效益,但文档说只要求在elasticsearch.yml中设置cluster.namenode.name即可,ElasticSearch节点启动时会活动发现集群并投入到集群,但凡事设置落成后,竟无法使种种节点组成集群,最终发现那种办法只在一台机械上有效,而要组成集群,要求在每台节点做以下配置:

discovery.zen.ping.unicast.hosts: ["Node1_IP:9300", "Node2_IP:9300", "Node3_IP:9300"]

ElasticSearch一般会开八个端口,一个是集群维护端口,如上面的9300;
一个是对外提供的端口,默许是9200。

Faker.Net:方便生成多量测试数据的框架。

Logstash如何创立Mapping

当使用Logstash进行转账时,有可能你的数额都在一个Index中,当然你也足以设置不一样的Index,那篇小说中就有依照type来划分Index的办法,不管划不分开Index,都会默许生成一个或多个mapping结构,mapping结和见仁见智的type即对应MySQL中的数据库和表结构新闻,当然我那边不是为了印证它们的区分,而是大家鞭长莫及自定义字段的品种。

那会时有暴发种种各种的标题,比如它会默许发生analyzed类型的string字段,会自行将含有连接符的字符串分为多少个字符串输出,即”idc-1″那样的字符串会输出为”idc”和”1″,那并不是自身想要的,让自己万分麻烦,而Mapping在扭转后是没办法修改字段的,除非你换一个新的字段。

解决这几个标题的不二法门并不在mapping上,而我却花了比比皆是时日在这几个方面,最后答案却是使用template,在template中得以定义你要求的mapping,那样便解决以上难点。到此,我或者不能一心绪解里面的编制,未来抽空明白后再补上。

WEB开发和筹划:

运用ElasticSearch将近7个月了,在行使进程中,陆陆续续踩了不少坑,每便觉得力不从心逾越时,心里都想甩掉,一是因为那东西要完全控制不是那么简单,须求花很多光阴;二是一旦持续行使已经用过的zabbix,说不定可以迅速满意眼前的须要,从而可以抽身做别的工作。但坚称下来,就必定能从坑里爬起来,从而对那个系统越来越通晓,并选取那头”猛兽”帮忙我做越来越多工作。原因很粗略,ElasticSearch除了是一个分布式数据库,依然一个伸张性和可用性都很强的近实时寻找引擎。

Pepsi-Cola and Image Optimization
Framework:微软CSS天使,多图合成一张大图和CSS样式。

近年来甘休,踩过以下多少个坑:

DotNetOpenAuth:让网站有着接济OpenID、OAuth、InfoCard等身份验证的力量。

Logstash吞吐量难题

在利用了新的架构后,我意识了当流量上来后,Redis的行列会没完没了增高,消费速度跟不上生产速度,造成的标题是数码在Redis中积聚,图表突显有雅量的延期。解决这一个题目有以下多少个思路

  1. 兴许是ES插入速度太慢,需求调整参数升高插入质量
  2. 也许是Logstash吞吐量低,必要伸张每一遍向Redis拿多少的缓存、扩大向ES输出的缓存、扩充线程数、伸张每便批量操作的content length

对于ES调优中,我调动了线程数,扩大线程队列,增大shard数,但都不曾缓解难题。

而Logstash调优,我首先调整了LS_HEAP_SIZE参数,让Logstash可以同时处理大量的多寡,然后主要专注在调动Logstash的Input和Output插件参数上,插件中得以设置线程数、batch_count数值等,而当自己将Redis插件参数改为batch_count=>10000后,发现队列不再直接压实了,它会涨到一定程度后,刹那间精减到2-3位数,即队列的长度在必然限制内变化,当时春风得意,以为自己解决了,但跑了大约5个时辰候,发现队列又起来不住增高了,难点并不曾获得化解。而发生解决了的假象应该是我扩张了Logstash内存的原故,数据只是先把Logstash内存填满,再起来填队列,而填满Logstash内存花了多少个时辰,关键的Logstash到ES的吞吐量依旧尚未上来,在access日志中,无论怎样也无能为力让bulk
API的content length增添,如下图中的长度一贯维系在2K左右。

accesslog

最终,我利用了交替Logstash版本的策略,更新了当前最新的5.1.1版本,由于新版的安顿和旧版配置不均等,所以认真商讨了一晃配备,在这么些进度中,我意识了一个-b参数可以修改批量插入的轻重缓急,也许就是我急需的。果然,将以此参数由默许的125改为了1000,顺遂的解决了这一个难点,同时也验证了并不是本子难题,仍然拔取难题,而以此参数也正是修改content length的格局,顺便说一下,假如您利用nginx作为负载均衡器,你必要同时扩张client_max_body_size参数,幸免生出content length过大而回到413错误码。

借助注入IOC容器框架:

head插件安装败北

上文有介绍head插件,它是一个足以来得集群状态及操作ES集群的UI,能够取代官方的X-Pack,后者唯有30天的试用期,因为创业集团,能用免费的玩命利用免费的。在集群中,有多少个节点安装该插件会破产,提醒:Unable to veryfy checksum for download plugin ...,google上查了一圈依旧没有找到解决办法,最终试起头动将该插件下载然后解压到/usr/share/elasticsearch/plugins/目录下,并将引得改为head即可缓解该难点。

上述难题是本身这段时日来碰着的坑,每个都花了成百上千时刻去解决,自己也相比幸运,花在地方的流年从没白费。因为个人认为那几个技术栈实在是相比较好,而资料首要以英文的为主,把温馨的阅历写下去,希望今后不再犯同样的荒唐,也可望可以扶助其他使用该技能的同校。

本文参与了掘金技术征文活动:https://gold.xitu.io/post/58522dca128fe1006b54da92

欢迎您扫一扫上边的微信公众号,订阅我的博客!

Skimpt:基于.NET开源的显示器截图软件。

未利用队列或logstash,导致数据丢失

早期用到的架构卓殊简单:
使用ES(ElasticSearch缩写)集群作为存储,beats和rsyslog作为shipper向ES集群发送数据,使用那种架构的最紧要原因是计划不难,ES本身是一个高可用集群,直接把多少发过去就好。而团结心中还时有暴发了怎么会有ELK架构,感觉Logstash是剩下的想法,在暴发了两回down机之后,才发觉前边的想法很傻很天真,在此以前的架构也有肯定的题材

old

  • 在某一个节点down掉后,若是不立刻回复,在不停解beats负载均衡机制的前提之下,很难判定数据还会不会发送给down掉的节点,而新增一个节点,需要修改所有beat的配备,即那里至少要拔取一个载重均衡器给拥有ES节点做负载均衡
  • ES是一个高可用集群,但眼前还未曾丰富的应用经验,所以可能未来还会冒出集群故障的题材,而出故障,很可能引致数据的遗失,为了防止那种场所时有暴发,需求在beats和ES集群之间创设一套可持久化的行列,最简便易行的行列是redis,而logstash放在redis两边分别作为劳动者和消费者。想到的方案便是beats->logstash->redis->logstash->ES,那样便解决了丢数据的标题,当然最新版的logstash可以将数据持久化到磁盘上,也许可以对此模型进行简化

Logstash和Redis的施用都分外简单,这里就不一一介绍,值得注意的是,假如要运用redis做持久化,须求动用Redis的List的法子,而不是Sub-Pub的办法,以下是现实的架构图,箭头的动向是多少流动的动向。

new

DevExpress:一个满世界知名的桌面应用程序UI控件库。

ImageGlue.NET:商业的图像处理组件,帮忙的格式列了一大堆。

Discuz.NET:国内开源的论坛社区体系。

SqlMapper.cs:用于小品种的通用的C#数据库访问类。

Dotnetnuke.NET:一套十分优异的基于ASP.NET的开源门户网站程序。

Dapper:轻量级高质量基于EMIT生成的ORM框架。

XProxy:帮助插件的底子代理程序集,内置NAT、加解密、反向、直接和直接代理。

牛顿soft.Json:如今.NET付出中最流行的JSON系列化库,为新版的WebApi库提供基础。

ExposedObject:在类的外表通过动态语言dynamic的章程访问私有成员。

Redis:是一个高品质的KV数据库。
它的产出很大程度补偿了Memcached在一些地点的供不应求。

MiniProfiler和Glimpse:基于MVC的四款品质事件监控框架。

图表和图像处理框架:

测试和属性评估方面:

PostSharp:完毕静态AOP横切关切点,使用简易,功效强大,对目标拦截的法子无需任何变更。

关于NoSQL数据库:

Membase:家族的一个新的重量级的积极分子。

DataContractJsonSerializer 和
DataContractXmlSerializer:微软在WCF中利用的系列化器。

Math.NET:强大的数学运算、微积分、解方程和正确运算。

Autofac:最盛行的借助注入和IOC框架,轻量且高质量,对项目代码几乎无其余侵入性。

VMDotNet:中国联通飞信所拔取过的.NET运行时。

SuperWebSocket:通过.NET实现TML5 WebSocket框架。

Nhibernate:面向.NET环境的轻量级的ORM框架。

Lucene.Net.Analysis.PanGu:协理Lucene.Net最新版的苍天汉语分词增添库。

Imagemagick.NET:用C#对开源图像处理组件Imagemagick的包裹。

EnyimMemcached:访问Memcached最出色的.NET客户端,集成不错的分布式均衡算法。

开源的.NET系统推荐:

Cassini、IIS Express和Cassinidev:开源的ASP.NET执行环境。

事务和分布式事务援助:

JumboTCMS和DTCMS:国内五款开源的网站管理序列:

NLog:是一个简约利落的日记记录类库,质量比Log4Net高,使用和有限支撑难度低。

Visifire:一套效果相当好的WPF图表控件,协助3D绘制、曲线、折线、扇形、环形和梯形。
SparrowToolkit:一套WPF图表控件集,襄助绘制动态曲线,可绘制示波器、CPU使用率和波形。
DynamicDataDisplay:微软开源的WPF动态曲线图,线图、气泡图和热力图。

JavaScriptSerializer:微软默许针对WEB开发者提供的JSON格式化器。

PhoneGap和AppCan:跨平台基于HTML5的移位支付平台。

CuttingEdge.Conditions:基于Fluent接口方法练接口的契约编程组件。

分布式缓存框架:

AutoMapper:流行的目的映射框架,可削减大气硬编码,很精妙灵活,质量表现也可接受。

Quartz.NET:开源的功课调度和机关职责框架。

AspNetPager:国内老牌的ASP.NET分页控件,帮衬多样分页形式。

SSCLI:微软在NET Framework 2.0时代的开源代码。

Mongodb:分布式文件存储数据库。

Phalanger:将PHP编译成.NET,可实现PHP与.NET互操作。

nopCommerce和Aspxcommerce:海外一套高品质的开源B2C网站系统。

Topshelf:另一种创立Windows服务的开源框架

Microsoft.Practices.EnterpriseLibrary.Validation.dll:微软商家库验证程序块。

PushSharp:通过.NET向种种运动平台推送音信。

System.JSON.dll:微软温馨支付的JSON连串化组件(须要单独下载)

MonoTouch:用.NET语言开发IOS应用。

BlogEngine.NET:国外一款免费开源的博客系统。

Microsoft.mshtml.dll、Winista.HtmlParser.dll 和
HtmlAgilityPack.dll:解析处理HTML文档的框架。

DotGnu Portable.NET:类似于MONO.NET的跨平台运行时。

Orchard:国外一个MVC开源的博客系统。

Jumony Core:基于.NET开发的HTML引擎。

格式和数据类型转换:

KtmIntegration:一个支撑NTFS文件系统的事体开源类。

Enterprise Library Log Application Black:微软集团库日志记录。

数据注解组件整理:

Katana:微软基于OWIN规范落到实处的非IIS寄宿ASP.NET和MVC等。

SubSonic:杰出的开源的ORM映射框架,同时提供符合本人须要的代码生成器。

NOPI.dll:导出Excel报表的插件(基于微软OpenXml达成)(nopi.css.dl通过css设置样式)

PowerCollections:国外一个牛人写的高等级开源集合。

Enterprise Library:微软本着公司级应用开发的顶级实践组件。

Elmah:完毕最风靡的ASP.NET应用万分日志记录框架。

南茜Fx:是一个毋庸置疑的轻量级开源.NET
WEB框架。假诺想快捷做个简易的WEB应用。

Microsoft Velocity:微软自己分布式缓存服务框架。

Paint.NET:基于.NET小巧灵活有力的图形处理开源项目。

Clay
dynamic:开源的动态语言dynamic框架让你形如javascript的措施创设对象。

mono for android:用.NET语言开发安卓应用:

MONO.NET:跨平台的.NET运行环境,让.NET跨平台运行成为可能。

FluentData:开源的基于Fluent API的链式查询ORM轻量级框架。

Log4Net.dll:轻量级的免费开源.NET日志记录框架。

JavaScript.NET和ClearScript(微软产品):基于.NET开发的JavaScript引擎。

EF(ADO.NET Entity Framework):微软根据ADO.NET开发的ORM框架。

SharpSerializer:开源XML和、二进制、JSON、压缩和优化框架。

常用的多少个ORM框架:

OXITE:微软ASP.NET MVC案例演示框架。

DocX:不须要设置word软件,通过C#操作word文件。

FluentValidation for .NET:基于LINQ表明式方法链Fluent接口验证组件。

转自:http://www.cnblogs.com/hgmyz/p/5313983.html\#3390282

WPFToolkit 和 Fluent Ribbon Control
Suite:开发近乎于Office风格的Ribbon菜单。

DasBlog:国外一个依据ASP.NET的博客系统。

xUnit:比NUnit更好的单元测试框架,升级革新版的Nunit框架。

分词、全文检索和查找引擎:

PrivateObject:微软单元测试框架中便捷在表面调用类内部私有成员的一个类。

电动任务调度框架:

PetShop:微软ASP.NET宠物商店。

SharpZipLib.dll:免费开源的ZIP和GZIP文件解压缩组件。

跨平台和运作时解决方案:

iTextSharp、PDFsharp 和 PDF.NET:通过.NET处理和生成PDF文档的零件。

YUICompressor.NET、Microsoft Ajax Minifier 和 Google Closure
Compiler:JavaScrip和CSS压缩器。

SuperSocket:基于.NET轻量级的可伸张的Socket开发框架。

NET Transactional File
Manager:对文件系统操作(复制、移动和删除)出席工作帮忙。

EmitMapper:品质较高的ORM框架,运行时经过EMIT动态生成IL代码,并非选择反射机制。

Moq:卓殊流行的Mock框架,辅助LINQ,灵活且高品质。

日记记录极度处理:

Ninject:基于.NET轻量级开源的借助注入IOC框架

Lucene.net:流行高品质的全文索引库,可用以为各项音讯提供强有力的搜寻效果。

反射和动态语言:

Memcahed:一套分布式的高速缓存系统,近期被很多网站采纳以升级网站的访问速度。

IKVM.NET:基于.NET的JAVA虚拟机,让JAVA运行在.NET之上。

从今学习.NET以来,优雅的编程风格,卓殊不难的可扩张性,丰盛强大开发工具,极小的学习曲线,让自家对那些平台发出了长远的志趣,在办事和学习中也积累了一部分开源的零部件,就现阶段想到的先整理于此,假使再想到,就三番一回补充那篇日记,有增无已,就能形成一个祥和的组件经验库。

Nunit:一个轻量级的单元测试框架。

Unity:微软patterns&practicest团队开发的IOC看重注入框架,支持AOP横切关心点。

桌面应用程序框架:

Cordova:PhoneGap贡献给Apache后的开源项目,是驱动PhoneGap的基本引擎。

 

开源图表总括控件:

MEF(Managed Extensibility
Framework):是一个用来增添.NET应用程序的框架,可支付插件系统。

Spring.NET:看重注入、面向方面编程(AOP)、数据访问抽象,、以及ASP.NET集成。

互联网通讯和互联网协议:

发表评论

电子邮件地址不会被公开。 必填项已用*标注