微服务时代之2017年五军之战:Net PHP谁先死

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 1.引言        其实我一直是个懒人,开博也有好几年了,但是一直懒得写文章,主要怕打字麻烦, 手机都是用讯飞语音输入的, 可惜博客里面很多专业性的词语,用讯飞也不大好,另外无论在家还是在公司,开个语音一本正经的叽叽叽,画面也太美好,干脆还是手打吧,对观众也是一个尊重         这个话题实在不想开,主要是怕开了,各路大军蜂拥而至,一人一口唾液也被喷死了,原来只要一讨论.

 1.引言       

其实我一直是个懒人,开博也有好几年了,但是一直懒得写文章,主要怕打字麻烦, 手机都是用讯飞语音输入的, 可惜博客里面很多专业性的词语,用讯飞也不大好,另外无论在家还是在公司,开个语音一本正经的叽叽叽,画面也太美好,干脆还是手打吧,对观众也是一个尊重

        这个话题实在不想开,主要是怕开了,各路大军蜂拥而至,一人一口唾液也被喷死了,原来只要一讨论.net java php谁好,马上就有混战了,最终以PHP是世界上最好的语言为结论休战,讲真,作为一个IT界混了这么多年的人,啥语言都要会点,要不然你真不好意思出来围观,所以在MVC之前的时期,根本也无所谓那种语言好,哪种不好,都是半斤八两吧。 不过在那个时期,很公正的讲:

 

2.五军介绍

         1 ..Net 还不错,尤其是VS开发环境,那调试真心爽,代码也很优雅,唯一不足就是.net 环境很恶心,各种体积大,各种向后兼容,搞的实施人员骂娘

         2 .JAVA也不错,这几年一直是我的主开发语言,主要是一个JDK跑天下,各种平台爽呆呆。当然各种Jar包也会找的你哭,直到Maven这个神器出来一统江湖,大家都爽了,唯一偶尔还骂一下的也就Eclipse了。当然也有用其他IDE的,在此不多评论,用过VS的话都得趴下。

         3 .PHP嘛,我不知道怎么讲了,好像连喷的引子都没有了, 比IDE? PHP有IDE么? 比调试? PHP 有调试么? 比中间件?PHP有中间件么? 当然,PHP开发还是蛮快的,有他自身的优点(一大波PHPer正在赶来,好吧,PHP是世界上最好的语言)

         4 .GO&NodeJS  Python 二线语言, 各位大爷先别喷, 真正的大型,大规模产品,还真没用这几个语言开发的,有个别用的后果也是最终转上面3个大哥

         5 .其他语言 IOS ,C++ 等, 不说了,没法喷,地球的未来是互联网时代。除了图形及前端运算等需要,这类语言不会消失,但生存空间会越来越小。现在铺天盖地的混合开发框架已经在不停的打压前端语言了。

        好了, 五军凑齐,但是真正开战的主力,还是前3个, 后面2个的粉丝可以先去讨论下PHP是不是世界上最好的语言,然后再过来观战

 

3.开战背景

        为什么前三个要开战呢? 主要还是从16年下半年开始,蓬勃发展的微服务架构,Docker DevOPS ,这两个家伙把IT市场彻底给搅乱了,不明真相的吃瓜群众肯定说:用自己的开发语言就好,其他管我屁事? 且听我继续道来,这2个家伙终究要改变世界,啊不,终究要改变IT界的生存模式。

         1 .首先受到冲击的就是运维人员, 这群庞大的组织,因为Docker DevOps的存在,会逐渐消亡,因为以后基本不需要什么实施,也不需要蹲点运维了,所有的功能代码,最终交付形态都是一个image镜像,一个DevOps人员就可以完成自动化构建,生成Docker镜像,集群化部署。 而传统的安装文档Step1-Step100就再也没人看了。

             这块影响最大的,可能就是依赖于IBM,Oracle等巨头中间件的这部分人了,想当年,IBM靠WebSphere中间件系列, Tovoli系列养活了多少实施运维人员,工资傻高,福利贼好,但是Docker一出谁与争锋,DevOps概念深入身心,开发运维一体化将是未来唯一主流的道路

         2. 其次受到冲击的,就是传统思维,传统架构的的开发人员,16年下半年开始,JAVA率先转入微服务仙域,坐看人间百态,笑而不语。因为SpringBoot和SpringCloud完美支持无缝对接微服务,那可是JAVA的亲大爷,.Net只有干瞪眼的份,无奈天生基因形态,无法有效实现微服务,更别说像SpringCloud的生态链了,不过微软打死都不改变,你Linux有Docker,我也得弄个Docker,好嘛,出来的是基于微软Hyper-V的,微软引以为豪的界面型操作,在Docker命令型操作面前被轰成了渣渣,没办法,把PowerShell改下,全学Linux的Shell,奈何最终是一个四不像,搞得人都不愿意用,干嘛费那么大劲学PowerShell?直接转Linux多开心? .Net Core 也开始跨平台,可惜背后的生态链都无法完美进入Docker,更别说DevOps的思路了。所以.Net Core看起来很美好,其实道路还是很曲折的,一个人对抗整个JAVA生态链,还是太弱。至于PHP,怎么升仙进入微服务? 请先把自己的MVC搞定再来发言吧。 什么?有同学说PHP的MVC有啊,好吧,请先去参观研究下JAVA 和.Net的MVC吧。

          3. 另外一个受影响的,应该是互联网甚至是整个IT界的运作模式了,目前虽然收到冲击,但是还不算致命,但是未来1-3年内,肯定要大变样,主流应用,主流互联网产品可能都会转型到微服务模式,毕竟从快速开发实现,快速迭代,及时响应变更,同时降低成本方面考虑,企业都愿意接受更好的方案。传统企业,国企政企嘛,想想就算了,真带不动,一群只会用XP IE6的群体,和互联网本身就是互斥的,所以对于在这类产品环境下生存的ITer们,就要考虑了,不转微服务,那你的技术生涯可能也就2-3年了,转微服务?那估计只能跳槽了。毕竟对于思想排斥互联网,动不动就是管控,内网,各种约束,是无法有效高效利用互联网带来的价值的。

 

4.DevOps助攻

         好了,说了这么多,也简单说下微服务+Docker+DevOps的简要流程和关键点:

         传统模式: 1.开发代码-》2.测试-》3.打生产包,写部署文档,数据库脚本,其他环境要求-》4.实施人员安装-》5.运维人员维护,备份数据-》6.再次循环1-5过程

                             这期间基本每个环节到下一步都会出现扯皮的情况,就是各种不行,各种验证,各种开骂。环节多了,经手人就多,出问题几率就大

         DevOps模式: 1.开发代码-》2.测试-》3.提交Git/SVN 自动构建生成Docker镜像-》4.,自动发布集群 -》5循环3-4过程

                              这种模式,只关注2个重要点,第一个是代码,第二个是生产环境的共享存储,尤其是在云计算环境下,就更爽,其他的服务器,环节操作,都可以随时销毁,随时重建。

          这里面需要重点强调下Docker的牛逼之处, 传统模式,如果需要建立分布式集群,那是需要几个软硬件专家,或利用各种中间件来实现,维护难度,企业成本不是一般的高,买软件,加服务器,甚至实施运维都是皇帝,公司惹不起,没事给你来个删库毁集群再跑路,哭都来不及。而Docker出现后,就把这部分群体彻底废掉了,随时随地加服务器,硬的,虚拟的,云的,统统只要一行命令就搞定。随便删,随便Down,随便加,有了Docker都不怕。

 

5.开战

          讲了这么多,吃瓜群众不乐意了,不是五军之战么? 到底还打不打了? 不打退票~!

          好,前面也说了,主站还是3军  JAVA .Net PhP  ,  其实JAVA是不战而胜, 所有的微服务Docker几乎是为JAVA 量身定做的。剩下就看.Net 和PHP的生态链如何来PK了

          从15年底,微软开始亲近开源社区来看,后续一系列动作,包括.Net Core 1.0发行,到现在2.0. 基本跨平台还算可以, 尤其引入Nuget生态系统,可以说弥补了.net的很多不足, 整体生态链已经在建设,我认为可以达到JAVA的30%-35% ,而自动化构建本身也是.Net的强项,可以达到95%,唯一不足的是这个生态圈子以Win为主,无法跨平台,Docker部分

          我觉得微软路子没选对, 可能考虑到自家的生态系统,所以选择了以Hyper-V作为Docker的核心,导致Linux中众多的Docker服务,无法在Win下使用,其实微软既然在新Win里面嵌入了MiniLinux,完全可以以此为基础,进行加强,形成一个混合的系统,连Docker也可以混合支持Linux。但是现在微软在Docker的做法,可能真的就把Win系统生态链带入绝境。 开始我也说了,未来是Docker的世界,这块不做好,只有死路一条。

          至于PHP,我已经找不到好的切入点了,因为基本的MVC,就和JAVA .Net相差一部分,而微服务的基本思想,也都会依托与MVC服务,所以这部分至关重要,成熟的MVC框架,包括其身后的生态系统支撑,才能形成可靠的微服务系统。 当然Docker的话PHP也是可以很快集成融入。 唯一不足的可能就在于微服务的基本基因较弱吧。至于服务发现,服务熔断降级,全局配置中心,统一网关,PHP貌似还没有太成熟可靠的生态系统。

 

6.结论

           基于16年17年的现状来看, .Net已经在改变,但是没有下狠心, PHP可能还在梦游,没有一个统一的组织来引导这个。所以这样持续下去的话,1-3年内PHP先死,2-4年内.Net也仅仅是苟活着了。而市场80%可能都会转入JAVA生态系统了。

 

7.总结

      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

      集中答疑一下吧:

       1. 首先作为一个13年的ITer,各种开发语言还是都可以玩一下的,平时用的最多的还是JAVA和.Net ,这2个是真心喜欢,PHP偶尔也写写配合下大部队,16年底我倒也不会说到底那个语言好坏,毕竟各有优势,但是为什么现在要给大家做一个预判告警,就是因为Docker+JAVA+微服务这3个家伙到一起后,互相加成,从17年开始,就要彻底干翻其他的语言了。从世界顶尖的公司全面微服务Docker化,到中小型互联网公司陆续转型微服务,可以看出这个大趋势不可逆。 而Docker+.Net 生态链+ 微服务  和Docker +PHP生态链 +微服务,不但无法相互加成,还相互抵消。具体可以关注我的微博,后续慢慢给大家讲。

        2. 看了很多朋友的留言,只能说看懂的是真看懂了,不懂的是真不懂,半懂不懂的还坚持在自己的小天地里面,我说过1-3年可以见分晓,很简单的一个例子,我们不是仅仅把.Net Core跨平台装进Docker里面,也不是想办法把SQL Server装到Docker里面来刺激下G点。这都是玩具,真正要考虑的是一个全面的体系,我简单说下问题,有疑惑的可以认真思考下

             1. 公司都是小团队,客户,产品,变更快,2周出一个迭代版本,3周换一个大业务流,怎么去响应?我说的是测试完成并且上线。 尤其是PHP

             2. 公司购置服务器,是一次买10台?外加存储阵列?还是用云主机+共享存储? 现在多数都会选择后者,那么问题来了,平时流量5台足以,6月,8月电商日活动峰值需要30台,怎么办?买不买?买多久?与此相关的消息队列MQ,Redis缓存,MySql都需要同步伸缩,怎么办?   这时候有人要抬杠了, .Net 不行? PHP 不行?  从目前来讲,还真不行,没有SpringCloud生态支持,这两个语言真玩不转, 更可怕的是微软现在仅仅把 .Net Core 开放到Linux平台,就想让Linux的Docker资源开放到Win平台, 本身就会把Win生态链搞死, 想想把,我秒开30台MySQL,微软给我秒开30台SQL Server试试? 所以微服务时代,微软真心不适合, 连我也都放弃了最爱的Oracle,想想为什么吧。

         3. 有朋友说微服务是一种思想,和操作系统有毛线关系? Docker是一种容器,啥都能放,和你JAVA有毛线关系?  这个是正确的,分开看,的确是这样的, 包括Docker其实也出来2年了,也没有见惊天地泣鬼神的事件,但是一切的一切都在于  Docker +JAVA微服务化(SpringBoot)+微服务生态链(SpringCloud) 这3个在16年底,17年上半年相遇了(各自有成熟的发行版)从此才可以改变整个IT界。 瞬间让秒部署成百上千台服务器成为一个SoEasy的事情。    .Net的生态圈可以?还是PHP可以? GO语言.NodeJS ? 身后没有一个强大的生态链,真搞不定。

 

     所以在这里,我也不多说,请关注我后续的博客发言,我给大家逐步讲解分析。 Now,不理解的朋友,可以去搜下SpringBoot,SpringCloud,JAVA微服务,Docker,DevOps等实际的文章,园里的大牛还是很多的,看下他们的理解和想法,你终究会明白,这IT界的天,是要变了。

                 

 

目录
相关文章
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
166 3
|
5月前
|
人工智能 物联网 开发者
**.NET技术革新赋能软件开发:从.NET 5的性能飞跃、跨平台支持,到微服务、物联网、AI和游戏开发的广泛应用。
【7月更文挑战第4天】**.NET技术革新赋能软件开发:从.NET 5的性能飞跃、跨平台支持,到微服务、物联网、AI和游戏开发的广泛应用。随着云集成深化、开源社区壮大,未来将聚焦性能优化、云原生应用及新兴技术融合,培养更多开发者,驱动软件创新。**
152 1
|
6月前
|
监控 PHP Docker
PHP框架如何应对微服务与容器化趋势
这篇文档讨论了PHP框架如何适应微服务和容器化趋势。主要内容包括:1) 微服务支持,如服务拆分与通信、服务发现与注册、数据持久化与缓存及安全与认证;2) 容器化支持,涉及轻量级与可移植性、自动化构建与部署、环境变量配置及日志与监控。文中通过代码示例展示了如何使用Laravel框架构建微服务和Docker容器化部署。最后,提到了扩展性和容错性在微服务架构中的重要性,并指出实践中还需考虑版本控制、灰度发布等高级功能。
107 0
|
7月前
|
Kubernetes Cloud Native PHP
构建高效云原生应用:基于Kubernetes的微服务治理实践深入理解PHP中的命名空间
【5月更文挑战第28天】 在当今数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为了企业IT架构的重要选择。本文深入探讨了如何在云平台之上,利用Kubernetes这一容器编排工具,实现微服务架构的有效治理。通过分析微服务设计原则与Kubernetes特性的融合,提出了一套系统的微服务部署、监控和管理策略。文章不仅阐述了关键技术点,还提供了具体实施步骤和最佳实践,以期帮助企业构建出既高效又稳定的云原生应用。 【5月更文挑战第28天】在PHP的编程世界中,命名空间是管理代码和避免名称冲突的强大工具。本文将探讨PHP命名空间的核心概念、实现方式及其在现代PHP开发中的应用。通过深
|
7月前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
123 0
|
7月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
开发框架 监控 前端开发
推荐一个.Net分布式微服务开发框架
推荐一个.Net分布式微服务开发框架
126 0
|
JSON 网络协议 PHP
PHP写微服务之Hyperf
PHP写微服务之Hyperf
450 0
PHP写微服务之Hyperf
|
运维 JavaScript 前端开发
一套.Net6可落地的微服务、分布式开源项目
一个轻量级的微服务架构,支持经典三层架构和DDD架构模式开发,技师选型都是目前主流的技术。是一个前后端分离架构,前端采用Vue开发,后端使用.Net6架构。Api接口遵循RESTful规范,接口安全验证采用JWT机制。
463 0
一套.Net6可落地的微服务、分布式开源项目
|
存储 开发框架 NoSQL
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
345 0
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis