新闻 .NET技术+25台服务器怎样支撑世界第54大网站 再度燃起人们对.NET的技术热情。这篇新闻中透露了StackExchange 在技术方面的混搭,这也是我所崇尚的。因此我也在社区里极力推广Mono平台,这篇短文就想和大家一起讨论一下混搭.NET技术。
混搭(Mashup)架构是一种新型的集成各种技术的应用开发架构。传统上,Mashup源于流行音乐,是一种音乐类型,也被称为bastard pop,指的是艺术家组合或者混合两首不同的歌曲(通常属于不同的流派)的音乐和歌词来创作新的歌曲。它拥有三个特征:天生的创新性,人们的经验性和结果的和谐性。
特征一:天生的创新性。从起源上看,Mashup是一种内容上的创新组合。这里重点是创新,虽然组合的元素通常都源自于本来无关但非常常见的东西,但这和任何创新活动类似,一旦组合便会产生一种具有新意的新生事物。
特征二:人们的经验性。这些组合都是人工进行合成的,而不是通过计算算法来合成的,人们的经验和思维在Mashup过程中起到了决定性作用。
特征三:结果的和谐性。无独有偶,在现实社会中Mashup风潮也影响着服装时尚界,设计师们把街头朋克元素引入到传统的英格兰服饰,用运动T恤混搭具有少女风情的篷篷裙,产生了意想不到的匹配效果。时尚界也称Mix & Match风格,从字面上理解,Mix是混合,Match是匹配,合起来翻译成混搭。指将不同风格,不同材质,不同身价的东西按照个人口味拼凑在一起,从而混合搭配出完全个人化的风格。Mix就是混合两个或多个元素,来展现新的用户体验。Match是指一种和谐相配的有机组合,否则就是“瞎搭”了。这就是特征三,混搭结果必须和谐匹配,具有这种既混且搭的东西,现实生活中除了音乐和服装,还有中国火锅,多元文化,多元的收藏,装饰和建筑风格等等,人们的情绪可以说也是一种混搭的表现。
对IT技术来说,就如同创造新音乐,新服装那样,它能让开发人员创造针对特定的业务需求的业务混搭IT技术。下面我们来看下StackExchange 在技术方面的混搭:
1、混搭Windows和Linux
Stack Overflow 把系统部署在Windows 平台上,同时使用Linux系统上,什么好用用什么,不要做无必要的系统之争,比如 C# 在 Windows 机器上运行最好,我们使用 IIS;Redis 在*nix 机器上可以得到充分发挥,使用*nix。还有 Windows上也有IIS ARR,但是他没有Linux上的Haproxy好,所以它使用Haproxy,同样的还有Windows上有nlb,Linux上有LVS,LVS 比NLB 好太多了,所以不要局限于所使用的系统,完全可以混搭使用Windows和Linux。
2、混搭物理服务器和虚拟机
硬件永远比开发者和有效率的代码便宜。基于木桶效应,速度肯定受限于某个短板,现有的云服务基本上都存在容量和性能限制。StackExchange 混搭使用了物理服务器和虚拟机,物理服务器可以将发挥纵向扩展的威力,数据库服务器使用SSD 磁盘,365GB内存 ,这样高配置的服务器现在云平台上基本没有,同时在一些低负载的场景使用虚拟机,例如VM 用于部署、域控制器、监控、运维数据库等场合。
3、混搭.NET开源社区技术
Stack Overflow 主要使用微软的.NET技术,混搭.NET开源社区的技术。 Stack Overflow本身就是.NET开源社区的一个参与者,他运用了redis作为其缓存层,目前最流行的Redis的.NET 驱动就是ServiceStack.redis,它是Stack Exchange的一位开发者Demis Bellot 所开发的开源的、支持.NET与Mono平台的REST Web Services框架ServiceStack 的一部分。微型的 ORM ——Dapper也是 Stack Overflow 开源的,还有Stack Overflow的开源监控解决方案Opserver,也是 Stack Exchange发布。它基于.NET框架构建,这在监控工具领域有些与众不同。
4、混搭其他技术
使用 http://logstash.net/做日志管理,SSD 改变了搜索的使用方式。因为锁的问题,Luncene.net 并不能支撑 SO 的并发负载,因此他们转向了 ElasticSearch。
在众多的技术方案中,不同的技术方案都有它的优点,不过从单一的方式来说,也会有缺点,但两种技术方案的结合混搭,就可以解决这些问题,最大程度上发挥各自优点,弥补不同技术方案的缺点。不过只有象StackExchange 具备丰富的技术能力的专业团队,才能很好的完成混搭,让后期的使用安枕无忧。
任何一个技术方案,管理都会有风险,混搭当然也会有。因此,在进行混搭创新之前,首先要对混搭的技术有一个准确的评估,比如你的技术方案与要混搭创新的技术之间有没有优势互补,微软在2011年以前经常是复制社区的技术,一个微软技术的使用者局限于微软的技术,这就好比是近亲繁殖,微软现在已经改变策略,直接集成社区的技术,这也是一种混搭创新,特别是使用微软技术的同仁们也要学会混搭;第二点,在进行混搭创新的变革之前,要和整个公司团队有充分的沟通,让你的团队很清楚地知道为什么要进行这样的混搭创新,,大多数人都不大喜欢被改变,所以领导者决心要变革、要创新就必须说服成员,告诉他们不改变会怎样。
2014年的.NET技术已经进入一个新的高度,.NET vNext 有一个专门为云端环境优化过的模式,该模式允许你在部署程序的时候连同他们所用到的.NET Framework的相关库一同部署。由于.NET的运行时和框架中的库部署在了程序基础(app-basis)上,所以在同一台机器上,每一个程序可以运行不同版本的.NET vNext,并且可以单独升级,互不影响。这些库已经被显著的优化、精简以便减少框架占用的空间,并且将会使用NuGet来发布。.NET开发团队以跨平台的思想来开发这个模式,在开发过程中和Xamarin积极合作,以确保经过云端优化过的.NET程序可以运行在装有 Mono 运行时的Mac和Linux上。一次将非Windows主机作为一等公民对待。微软将Mono和Linux完全集成到他们的构建环境和测试矩阵中,并积极地与社区共同努力将Mono变成一个托管ASP.NET的顶级平台,Xamarin最近也在行动,剑桥大学的开源顾问全职加入Xamarin 公司,他的工作是确保Mono 成为Linux上的一等公民。消息来自他的博客 http://t.cn/RPLN4Hj。.NET和ASP.NET的巨大生产力可以提供给那些使用混合开发环境的团队。