课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
可扩展性软件架构是目前大多数程序员在开发软件的时候都需要满足的一个开发需求,下面我们就通过案例分析来了解一下,可扩展性软件开发实践方法分享。
不同的编程语言适用于不同的任务。
例如,Python有非常丰富的语法糖,非常适合处理数据,而且代码简短而富有表现力。但为了实现这一点,它需要运行在解释器上,在默认情况下,这比编译后在裸金属上运行的Go或C是要慢的。
NodeJS的外部工具可能是丰富的,但它是单线程的。要在多核机器上运行NodeJS,必须使用像PM2这样的东西,但这样的话,就必须保持代码是无状态的。
数据库也是一样。SQL提供了图灵完备性来查询和处理数据,但这是有代价的——没有缓存,SQL几乎总是比NoSQL慢。
除此之外,数据库通常是读取优先或写入优先的。这就意味着,它们中的一些在写入数据时速度更快,而另一些在大量读取时性能更佳。
例如,对于需要大量写入、偶尔读取的分析及其他任务,你可能想要选择“写入优先”的数据库,如Cassandra。
对于显示新闻这样的读取优先任务,好使用像MongoDB这样的东西。
如果两者都需要,就安装两个数据库!这不是不行。这不会造成什么破坏。事情就应该这样做。
多服务器
当一台计算机不够用的时候,可以用两台。当两台不够用的时候,可以买三台,以此类推。
但也有一个陷阱:从1到2比从2到3或从10到20要难得多。
要使用多台计算机,后端应该是无状态的。这意味着你必须将所有数据都存储到数据库中,而后端不保存任何数据。这就是函数式语言在后端如此流行的原因,这也是Scala被发明的原因。函数代码默认是无状态的。
无论如何,不同服务器的行为应该完全相同。如果你有大量的有状态服务器,那么根据定义,对相同的输入,它们很容易返回不同的数据作为响应,因为有两个事实来源:数据库和服务器状态。相信我,你不会想让这种事情发生的。
尽快实现无状态。好从一开始就选择无状态。如果你在使用NodeJS和PM2,如果你想让PM2帮你增加运行时以实现负载均衡,那你就必须让代码保持无状态。
负载均衡器会将请求重新路由到空闲的服务器。显然,对于相同的请求,服务器应该提供完全相同的响应。这就是我们转向无状态的原因。对NodeJS来说,PM2是一个很好的负载均衡选项。如果你用的不是Node,就选择Nginx。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。