在前几天的 App Engine 与 K8S 中,或许我已经大致的提过 Micro Services ,今天来试着更详细的介绍 Micro Services 的概念。
Micro Services 不限於任何的程序语言,无论 Python、Node.JS 或 Go 都有办法实现,它最大的特色就是「模组化」,把一个大程序给切割成一块一块的模组,方便维护与管理,当面对一个非常庞大的系统时, Micro Services 也可以快速的定位发生的问题。
与 Micro Services 相对的是 Monolithic application 单体式应用程序,也就是将所有的功能全部写在一起,这种方式以连接角度而言,设计会比较单纯与简单,开发时程上也会比较快。但当整个系统日益增大,则维护上会较为困难。
相较於单体式程序,微服务还有另外一个特色是可以快速的将任何一个模组进行扩展,假设我们有一个销售网站,而微服务切分了物品的展示前端,与实际购买,处理订单的後端。在双 11 等活动时,假设我们已知大多数的客户已经将需购买的商品加至购物车,这种情形下,我们就可以单纯的透过 K8S 的 Scaling 相关设定,设定扩展销售後端的模组,而不需要连同前端一起进行扩展,减少租用机器的费用。
微服务最大的特点就是每个服务应该独立自主,因此服务间最好需要有独立的资料库,服务间唯一的沟通方式是透过 API (最常见的是透过 RESTful) 进行交互。
基於 Micro Services 设计的 SaaS 最佳实践方式,目前最有名的是 The 12-Factor App ,关於相关的介绍可以参考去年 Miles 大大的铁人赛文章。简单来说,我们的开发过程可以遵守 12 Factor 的方式,有效的开发方便移植、扩展的程序。而这 12 Factor 依序是:
>>: Day 26:v-if 才做选择,v-show 全都秀
假如说,我想要让这篇文章预览画面中黄色框框的部分不要显示这麽多的文字,我可以利用Str::limi...
所有经过(ISC)²认证的资讯安全专业人员都承认,取得认证是一种特权,它必须花费心力取得并且持续维...
Hello, World! 我是 Peter ,在网页开发时,为了完善专案的功能与确保程序码的品质,...
今天我们要来讲剩下的方法 public void time(View view){ if (reco...
简简单单的开场白 这个系列的文章一开始是没有想到要出生的,但是在因缘际会之下,成为了学校深度学习课程...