微服务入门介绍

微服务入门介绍

微服务的出现在技术领域,尤其是DevOps圈子反响强烈。这也难怪,因为它完美诠释了云计算交付模式的优势。但是,如同任何一个快速发展的新生事物一样,要区别哪些是炒作,哪些是真正的微服务也绝非易事。
对于准备学习微服务,想了解一些实战经验的人来说,以下的文章希望能对你有所启发。


什么是微服务

微服务入门介绍


微服务是软件开发中把一个单一的应用拆分成一系列微服务的架构方法。每一个服务都有其独特且定义良好的角色,有自己的进程,并通过HTTP API或者消息进行通信。在同一应用中,每个微服务可以独立于同级其他的服务,进行部署、升级、扩展和重启。它们通常由自动化系统进行编排,使得在不影响最终用户的情况下,对实时应用程序的频繁更新成为可能。
对于这一切,我们早已不再陌生。想一下:现在,普通云用户(包括非技术性人员)很容易,且自然而然地使用多种微产品和微应用(他们没有称之为“The App Store”)。一般的企业会使用至少十几种不同的软件产品和集成:一种用于记录业务费用的工具,另一种用于跟踪计划,还有一种用于工资管理,等等。
微服务用更加紧凑,有效的工具更好的完成工作,且可扩展为企业级。
微服务类似乐高积木,可以拼在一起搭建一个标准模型。首先,开发人员需要识别项目需要哪些单独的服务,例如搜索,认证,消息传递,销售处理等。然后,他们从开源到成套的企业解决方案之间做选择,最后把所有东西整合成一个应用。


关于容器

微服务入门介绍


“微服务”和“容器”经常一起出现,但两者并不是一码事。微服务可以在容器内运行,也可以作为完整的虚拟机运行。也就是说,像Docker和Kubernetes这样基于容器的开源系统,是开发、部署和管理微服务的一种非常有效的方式。围绕容器产生的众多成熟和强大的工具、平台及各种服务,使得容器化天生就适合微服务应用。


微服务的好处

微服务入门介绍


“这非常简单:微服务使开发人员不必在已经解决的技术问题上再浪费时间,重复造*。” Container Solutions的联合创始人兼首席执行官Jamie Dobson说。小型自治团队独立开发、部署和扩展各自的服务,Dobson继续说,微服务本质上是“并行开发” - 加速生产周期,使其成指数增长。
此外,Dobson指出,持续集成和开发基本上已被纳入微服务架构。他说:“微服务减少了基础设施给项目带来的风险。随着对基础设施的淡化,微服务团队可以进行小时级的快速迭代,这在带来价值增长的同时降低了“错误功能”持续的风险。”
换句话说,微服务下,团队中的每个开发人员只需专注自己那部分工作,无需关注底层的基础架构。如果在生产中,拼在一起的各个模块不能很好的工作,则很容易将它们隔离,拆开并重新配置,直到可以为止。是不是很像乐高?


微服务是否存在缺陷

微服务入门介绍


相对于传统的单一应用,微服务显然更具优势。但和其他技术的发展过程一样,早期使用微服务的曲线会非常陡峭。所以目前,像Netflix和PayPal之类的大公司更易拥抱微服务,因为它们有强大的内部资源和工程师团队。
“如果是一个非常庞大,资源丰富的企业,每个团队都能够管理每项服务,并确保其可重用和可发现,这真是太棒了,” Matt Biilmann说。Biilmann是Netlify的CEO兼联合创始人。Netlify是面向Web项目开发和自动化的一体化平台,它最近新增了一个微服务网关。他补充说,Netlify已经注意到这对于开发人员的吸引力,“小项目中玩微服务——主要是因为它们很有趣!”
但是,Biilmann说,对于任何人而言,痛苦是真实存在的。摆脱集中式单体架构,意味着放弃了将部分合成一个整体的固有的工作流程。
“由于我们将单一应用拆分成微服务,导致我们面对的是一个碎片化的系统。开发人员需要花费大量的时间和精力将服务和工具整合在一起,并且这个过程,缺乏跨项目间的通用模式和平台。”他说,“虽然前景美好,但要想真正用好它,我们希望能提供可一键式安装配置的工具。”
举个例子,Biilmann提到LAMP。Linux,Apache,MySQL和PHP等免费提供的工具,为Web开发提供了新的可能——但当公司在为像WordPress,Drupal和Joomla之类的项目开发集成工具的时候,才考虑到架构问题。“你不会通过配置Apache、MySQL数据库来启动WordPress。你期望看到一个面板,然后在上面点击一个按钮,写着‘开始一个新的WP项目。' 之所以能够这样是因为在某个时间点,业界才有足够的能力去实现这些,使一键式配置成为可能。这对于任何一项技术的推广都至关重要。”
幸运的是,微服务正在经历同样的飞速发展。许多公司不仅着眼于微服务本身,还包括使微服务能够无缝衔接的工具、平台和框架,大家都希望能尽早占有一席之地。


微服务不是万能的

微服务入门介绍


现在去评估这些新事物,是否是最佳实践抑或可以存活多久为时尚早。更别说微服务还需要提高测试的复杂度,且有可能消耗更多的内存/计算资源。所以,尽管有诸多优点,但该领域的专家们认为并不是所有的项目都适合微服务。
一位专注于传统企业应用转型的资深顾问表示,在特定场景下,他仍然是集中式单体架构的粉丝。“当你运行的是同一服务的多个实例时,不一定需要微服务。一个精心打造的单体架构系统适用于某些特定的场景。”
另外,他还说,也有可能辛苦创建出的微服务最后无法扩展。“这一切都取决于你如何运用基本原则。在没有考虑成熟的情况下,好多人就盲目购买一堆微服务。”


下一个前沿

微服务入门介绍


真正的微服务,只运行你所需要的那部分服务 —— 不多不少。这是一个技术活,因为服务之间只有在编排后才能相互感知。最近,许多中小企业才感到这种实施和编排已经超出了它们的能力范围。
从围绕微服务的基础设施和技术支持来看,我们正处于临界点。
“微服务架构更快、更安全、更便宜 —— 很多时候,这确实是更好的办法。” Chris Bach,Netlify的另一位联合创始人说,“下一步是可访问 —— 可靠的工作流程。我们正在见证它的发展,直到某天,发现一切都已准备就绪。”
这意味着微服务,现在还只是开发人员的一个开发工具。
原文链接:https://thenewstack.io/microservices-101/

Kubernetes 实战培训

微服务入门介绍


本次培训内容包括:Docker容器的原理与基本操作;容器网络与存储解析;Kubernetes的架构与设计理念详解;Kubernetes的资源对象使用说明;Kubernetes 中的开放接口CRI、CNI、CSI解析;Kubernetes监控、网络、日志管理;容器应用的开发流程详解等,点击识别下方二维码加微信好友了解具体培训内容

微服务入门介绍


3月23日开始上课,还剩最后3个名额,点击阅读原文链接即可报名。