课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,微服务编程开发已经成为了常态,今天我们就一起来了解一下,微服务与单片服务之间的概念与区别都有哪些,希望通过对本文的阅读,大家对于微服务有更多的认识。
微服务、单片服务两者的概念与区别
从powser到各种公司的Apache,形成一个包含各种功能的WAR包,后是一个MySQL的存储层。这样的方式,比较易于测试,部署方面也很简单。
MonolithicAPP的优点如下:
易于开发。很多IDE和框架都支持,比如SprintMVC、RubyRails、PythonDjango等。易于测试。可以通过简单启动应用程序并使用Selenium测试UI来实现端到端测试。易于部署。只需将打包的应用程序复制到服务器。易于扩展。通过在负载平衡器后运行多个副本,可以轻松地水平扩展。DevOps比较简单。一支专门DevOps团队负责即可。
MonolithicAPP的缺点如下:
应用程序太大且复杂,很难完全理解并快速正确地进行更改。应用程序会越变越大,可能会减慢启动时间。必须在每次更新时重新部署整个应用程序。如果代码库有新的变化,变化的影响通常不是很清楚,这导致广泛的手动测试。连续部署很困难。当不同模块具有冲突的资源需求时,单片应用也可能难以扩展。可靠性差。任何模块中的错误(例如内存泄漏)都可能会导致整个网站宕机。此外,由于应用程序的所有实例是相同的,该错误将影响整个应用程序的可用性。采用新技术或框架很困难。由于框架或语言的变化将影响整个应用程序,因此在时间和成本上都是非常昂贵的。
随着代码库,组件和团队规模增长,各种问题相继出现。
主要概括为如下几点:
原代码太大,IDE打不开了。单机的内存不够,没法编译和跑代码。部署一次要花很长时间。开发速度跟不上产品的需求,一个小小的变化需要整个源代码重新编译。某一个模块里的一个小错误,可能导致整个网站宕机。
随着组织的成长,功能的增多以及技术栈的瓶颈出现,需要有新的变革。但面对如此庞大的视频网站,有的程序都是用的Java包,自有数据中心,当时还没有微服务的概念,但已经有了把内容拆分出来的意识。
微服务与单片服务的对比
单片服务是把所有的东西放在一个大盒子里,这个大盒子里什么都有。微服务更像是车箱,每个箱子里包含特定的功能模块和物品,所有东西可以很灵活地拆分出来。
也就是说,在MonolithicAPP中,所有的部件都在一个巨大的软件包中。在微服务的构建下,有很多独立存在的小服务,通过API接口连接成大的系统。
如何提高可用性(Availability)?
微服务并不一定能保证可用性,甚至有时微服务做不好更容易宕机,所以一定要采用一些好的容错机制。
所谓容错,原则上说就是当错误发生,尽可能让一台服务器宕机。常见的解决方式有Timeout、Circuitpeaker(熔断器)和Bulkheads(舱壁)-Rejectnewrequest三种。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。