专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
36氪  ·  当了两年全职爸爸后,我抑郁了 ·  2 天前  
小互AI  ·  Anthropic研究报告:揭秘 ... ·  2 天前  
小互AI  ·  Anthropic研究报告:揭秘 ... ·  2 天前  
新浪科技  ·  【#苹果确认部分Mac ... ·  2 天前  
新浪科技  ·  【#199元抢到LABUBU新品转手卖280 ... ·  3 天前  
51好读  ›  专栏  ›  CSDN

为什么要从PHP转向Go,及满足于使用MySQL

CSDN  · 公众号  · 科技媒体  · 2017-05-17 11:56

正文

请到「今天看啥」查看全文


我们熟悉的语言是PHP,它驱动着我们现有的应用程序,有两个模糊的理由支撑着我们使用PHP:


  • 我们熟悉PHP和它的怪特性 ,而且原来的程序运行得很好,我们为什么要放弃?

  • 外面有很多的PHP开发人员 ,PHP可以让我们的团队更容易地成长起来。


这些听起来都很正确,但是当我们清楚地认识到PHP真的不是我们这个案例的正确选择时,我们很快就放弃了这些想法。


我们正在向着微服务架构迁移,因为我们希望这些大流量的基础架构(每日200万活跃用户)具备可扩展性。从长远来看,随着我们向1000万甚至更多用户发展的时候,我们的基础设施也应该能相应地进行扩大。


PHP无法满足这些需求,因为:


PHP的启动成本很高 。 PHP一开始是为短生命周期脚本的运行而设计的,因此持久性并不是其原生特性。这意味着对于每个请求、数据库连接和类都必须实例化,这增加了不必要的开销。当然,这也是有办法解决的,例如通过PHP-FPM或Apache来创建连接池,或者绑定C以获得与Redis的长连接。但是,由于我们需要追求高性能,所以这些依赖让我们开始质疑PHP对于这个系统来说是否是一个合适的工具。


容器化的PHP是一个雷区 。 PHP需要借助Nginx和PHP-FPM(或类似的软件)来进行进程管理和连接池管理。这意味着对于部署的每个微服务来说,PHP-FPM和Nginx必须同时运行。这既浪费了资源,又降低了效率。对运行在服务器上的PHP实例进行优化也是相当困难的,因为你需要同时熟悉PHP、PHP-FPM和Nginx的配置。我们无法想象在弹性Kubernetes环境上配置多个PHP栈的痛苦,我们甚至不知道在这同一台机器上还运行了其他什么东西。


对微服务来说,其复杂性存在于架构中,因为你正在处理的是一个复杂的交互系统。既然我们已经确定采用微服务架构,那么因为错误的选择了编程语言导致的消耗显然就不值得。


招聘的要求是什么?我们发现这个所谓的要求对于我们现在这种情况是毫无意义的。像微服务一样,我们认为开发人员应该是编程语言无关的。我们宁愿聘请一位聪明的并愿意为了完成工作而学习新的编程语言的开发人员,而不是一位坚持己见的专家。因此,从这个意义上来说,放弃PHP对我们来说是一种解放。







请到「今天看啥」查看全文