龙空技术网

一切为了微服务,我们从PHP迁移到了Go

华夏仲研王老师 172

前言:

而今大家对“微社区php”大概比较讲究,姐妹们都想要分析一些“微社区php”的相关资讯。那么小编也在网摘上网罗了一些关于“微社区php””的相关文章,希望小伙伴们能喜欢,姐妹们一起来了解一下吧!

起初,咱们认为坚持一门了解的言语是负责任的工作——咱们是一个小团队,却已经冒了两次险:切换到微效劳和彻底重写咱们的 Web 应用程序(高流量游戏渠道)。

可是,最终咱们决定抛弃 PHP 拥抱 Go,下面我将解释为什么这么做,并共享一些在咱们的微效劳架构中数据库相关的想法。

微效劳和 PHP:概念性错配

咱们了解的言语是 PHP,它支撑了咱们现有的应用程序,有两个含糊的论据能够支撑咱们持续这么做下去:

咱们了解 PHP,它开发很快题。为什么要放弃对咱们有用的东西?市面上有许多 PHP 开发人员。 挑选 PHP 让咱们更简略扩充团队。

这听起来非常合理,可是当咱们清楚 PHP 真的不是咱们的正确挑选时,咱们很快就放弃了这些想法。

向 Go 跨进

咱们偏爱的两个首要言语是 Node.js 和 Golang。咱们做了一些研究,并决定了转向 Go 而非 Node。

这不是说咱们把 Go 用到所有当地。关于效劳器端渲染,咱们挑选 Node,因为它允许咱们在前端和后端之间共享逻辑。咱们也运用 Java 来处理特定的问题,因为 Java 已经存在了很长时刻,而且有很多类库。

咱们期望运用每个场景最适宜的东西,也就是说,关于大多数情况,Go 将是咱们的首选东西。

评估 NoSQL

当咱们开端用 Go 编写咱们的第一个效劳时,咱们一起也一起思考数据库的问题。咱们习惯运用 MySQL,它学昔作业杰出,但它往往也是功能瓶颈。在咱们的传统技术栈中,咱们还很多运用了 Redis 进行缓存,这关于功能来说非常棒,因为它有效地减少了数据库 join 查询的拜访压力。

因而当咱们开始在新技术栈中进行数据库选型时,评估 NoSQL 就很有必要,能够看看咱们是否能够彻底避免这些 join 查询。咱们评估了两个数据库:MongoDB - 咱们很猎奇去了解一个文档型数据库是否能够用来存储游戏中很多元数据。当然费事的是,咱们有必要在 Google Cloud 中运用,根据社区的说法,这样根本不能很好地扩展。咱们尽量避免杂乱的 DevOps 作业,因而 MongoDB 出局。Cassandra - 它是一个已知的能够扩展的数据库,并被一些大型高拜访量平台 Netflix 和 Reddit 运用。咱们喜欢的特性是:它的速度非常快,并支撑线性扩展。不过,咱们发现办理太杂乱了。

如果您确切知道怎么查询您的数据,Cassandra 非常适宜。关于具有很多数据的剖析效劳来说,情况或许如此,可是在灵敏的产品设计开发环境中,跟着产品的发展,用户适应性变化,Cassandra 尽管强壮,可是关于咱们这样的小团队来说难于控制。

标签: #微社区php #php双转移