如此强大的微服务,还不快快用起来!

微服务,它就像一个蜂巢。

关注《Java学研大本营》

什么是微服务?简单地说,微服务是一种设计和构建应用程序的方式,作为一个独立运行的小服务的集合。

一个单一的、单体的应用程序很像野外的孤独动物--比如说,一只北极熊--因为它需要其身体的所有部分都能准确地工作,并作为一个单一的实体准确地工作,以便茁壮成长。

相比之下,微服务就像一个蜂巢;每个微服务都有自己的应用编程接口(API),可以独立访问和测试。就像蜜蜂一样,有许多小工人执行同样的几个简单的相互联系的任务,比一个强大的个人执行更复杂的任务更有成效。

一个传统的应用程序可能被设计成一个由模块组成的大型代码库。微服务将这些模块分离成独立的微服务,每个微服务代表一个责任领域--例如,登录、搜索、订购和运输。这些微服务中的每一个都通过其API与另一个微服务进行通信。每个服务都在一个狭窄的范围内运作,并被设计成能很好地执行那一项任务。

微服务为什么重要?

如果你的应用程序是用微服务组件构建的,你就不会有单一的故障点--你的整个应用程序不会因为你的登录微服务不工作而崩溃。

当出现问题时,你的开发人员可以快速进入,识别问题,修复问题,并让你的应用程序启动和运行。此外,微服务可以以最小的风险进行更新和部署。

为什么选择微服务?

微服务有助于解决一些非常常见的问题,如横向扩展和松散耦合。

横向扩展是指增加服务实例的数量,以适应更大数量的用户/交易。例如,假设我们有三个登录服务实例在运行,但我们在黑色星期五和网络星期一这样的节日里遇到了使用高峰。在为高峰做准备时,我们可能预先将规模扩大到12个实例,并根据需要将其设置为自动扩展到24个实例。现在,登录服务可以处理增加的交易而不崩溃,在这些购买高峰期,企业和客户都很高兴。我们可以用微服务做到这一点。

松散耦合允许服务减少对另一个服务的依赖,这允许一个服务被更新或替换而不影响其他服务。例如,一个服务可以用不同的方式、不同的语言、或不同的内部技术来实现,但由于外部API保持不变,微服务之间的功能不会中断。

一切都应该微服务吗?

不一定。

微服务通常被设计为做一项特定的工作,就像一个独立的功能。微服务通常仍与其他非微服务一起工作,并对其有依赖性,如网络服务器、队列、缓存、数据库和通知服务。当扩大交易量对业务很重要时,微服务是一个很好的选择;金融服务机构、社交媒体和在线零售等行业是微服务的早期采用者。

微服务的挑战

虽然我们喜欢在PVM使用微服务,但微服务并不适合所有情况。它们在设计上确实有缺点,但也有解决这些挑战的办法。让我们来探讨几个问题--可追溯性、测试和更新。

可追溯性

可追溯性是指通过系统从头到尾跟踪一个事务的能力。微服务通常会把它们的日志汇总到一个地方,那么你如何追踪这个交易呢?一个解决方案是引入一个跟踪ID,然后在整个生命周期内跟踪该事务。有时,微服务的日志信息会让人感觉不堪重负。但如果你只是适当地标记和组织你的日志,这就不必成为一个问题了。

测试

此外,测试可能需要对你的微服务进行一些重新调整。除了标准的单元测试、回归/集成/端到端测试和烟雾测试外,现在可以对微服务进行单独测试。可以用PostMan、Insomnia等工具测试API功能,用Apache JMeter等工具进行非功能(性能)测试。

更新

最后,适用于多个微服务的更新可能意味着多次执行相同的变化。一个更有效的工作方法是重构微服务,使用一个共同的库,可以在微服务之外进行更新。

与传统的单体应用相比,微服务的一个优势是,当对一个非微服务进行修改时,整个应用必须重新部署,这就有可能出现崩溃、错误和延迟的风险。对一个微服务的改变可能只意味着对该服务的局部改变,而且重新部署的规模更小,风险更低。

PVM的微服务

作为Palantir的首选供应商,PVM被授权使用Palantir Gotham和Palantir Foundry进行操作、维护和开发,这些都是基于微服务原则建立的。作为亚马逊的合作伙伴,PVM拥有基础和技术级别的认证,可以帮助你用微服务开发、构建、部署和运行你的应用程序。

对于微服务开发者来说,值得一提的一个重要资源是早期软件即服务(SaaS)供应商Heroku开发的十二要素应用宣言。他们提炼了在平台上部署应用的经验教训,并制定了12个因素,作为指导新服务设计的原则。我们在PVM的工程师在一些项目上使用这个宣言,我们在下面强调了我们通常使用的两个指导原则。

因素3. 配置对于构建过程很重要。宣言将配置描述为不同部署之间的任何东西。配置因素指出,微服务需要 "将配置与代码严格分离"。这种分离有助于清楚地传达配置的内容,并防止配置值在源代码中被硬编码--基本上,将组件分离出来,以便它们不会破坏源代码。

因素11. 宣言指出,无论微服务的规模大小,所有日志都应显示应用程序的输出和错误。这就集中了信息,并聚合了数据,能够实时监控。然后,开发人员可以在一个中心位置快速看到错误和输出,而不是为每个服务挖掘不同的存储磁盘。

微服务是否适合你的组织?你是否看到它们有可能在你的一些系统或应用程序中实施?我们希望如此。

参考:https://medium.com/@pvm.inc/the-power-of-microservices-heres-why-you-should-be-using-them-484943fb443

新书推荐

《Spring Cloud 微服务快速上手》

购买链接:https://item.jd.com/13251159.html

《Spring Cloud 微服务快速上手》介绍了当下最主流的属于Spring生态的微服务框架,它继承了Spring Boot的优点,开发部署都非常简单。本书内容全面,介绍了微服务架构的发展历程,包含Spring Cloud Netflix 和 Spring Cloud 阿里巴巴的组件,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。在解读核心组件的实现原理的同时,配以案例进行实践。本书内容包含微服务架构和云原生架构,读者在掌握微服务之后,可以进一步掌握云原生知识。

《Spring Cloud 微服务快速上手》基本上将主流的微服务解决方案都融合在一起,比如注册中心,既包括Netflix的Eureka,也包括阿里的Nacos,还包括HashiCorp的Consul,让大家在技术选型中有一个横向的对比,可以结合自己的业务有更多的选择。同时,也提供了很多分布式的解决方案,比如分布式锁和分布式事务,让大家通过学习,对微服务技术栈有一个整体性的认识,能达到在生产环境中的应用。

本书适宜的读者包括: 需要求职进入互联网公司的读者。 希望研究Spring Cloud知识的读者。 从事微服务开发的读者。 对编程感兴趣的读者。 读者可扫描前言中的二维码,观看作者新的讲解视频,和作者进行沟通、一同进步。

精彩回顾

如何在Java中执行Python模块?从认识JEP库开始

你不知道的Java日志性能大比拼!

Java面试宝典大集锦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值