微服务是一种用于设计复杂软件的架构解决方案,将其分解为可独立部署的小型模块化服务。它通常与传统的单一体系结构形成对比,在这种体系结构中,软件是作为一个单元构建的。通常,微服务通过REST进行通信。
让我们考虑一下如何引入微服务可以帮助Java项目,他们要引入什么样的努力,它带来了什么风险,以及在哪些情况下它不太适合。

Java 微服务架构为项目带来以下好处:
随着价格的不断上涨,让我们考虑一下与实现Java微服务相关的一些潜在的痛苦领域:
考虑到Java微服务架构给项目带来的优点和缺点,将其应用于单片架构变得难以管理的复杂演化应用程序中是有意义的。对于简短的项目,不需要将部署和测试工作投入到微服务中。
你能用一块石头杀死两只鸟,并将单片方法与微服务架构结合起来吗?不幸的是,你不能。但是,如果存在这样的必要性,您可以命令将您的整体应用程序重构为微服务。这个过程相当复杂,但如果你确信你的应用程序将会很快成长,这将是有意义的。
Java微服务既可以改善 和减少组织的安全状况。我们来看看微服务如何帮助确保应用程序的安全性。
然而,微服务可能会为您的Java项目安全性带来一些软点。

通过正确的策略,与微服务架构相关的安全风险可以得到缓解。
首先建立通用的可重复编码标准,以减少可能导致可利用的漏洞或升级的特权的代码差异。然后,注意只为应该拥有它的进程或个人提供软件模块的权限。例如,如果没有必要修改现有信息,那么仅检查库存可用性的微服务应该被授予读取权限,而不是访问数据库的读/写权限。
绘制微服务之间的通信方法。这将有助于识别潜在的问题区域以及应用程序的不规则行为。最后,保持每个微服务的完整记录,包括它所服务的功能,如果每个特定的微服务受到损害,可以对(或通过)每个特定的微服务产生什么样的损害,以及可以调整或保护哪些微服务。
让我们考虑一下Java开发人员需要使用微服务的技术知识。

首先,人们应该熟悉分布式计算。微服务是一个分布式系统,比传统的单一体系结构更复杂。所以,每个微服务应该只解决一个问题,而不是让系统过于复杂。此外,项目团队应该准备根据需要重构软件元素。
对容器的了解可能是最有用的,比如Docker等。它们允许软件每次可靠地运行,并帮助快速将代码片段插入操作系统。
由于微服务的合作有很多复杂性,所以后端开发经验对开发人员也很有用。
由于Java微服务通常通过HTTP进行REST通信,因此还需要了解REST / HTTP / RAML / Swagger。其他有用的技术包括用于服务编排的Kubernetes,用于高速内部通信的gRPC,用于数据编排的GraphQL等等。在Java中使用微服务的最常用框架包括Spring,Hibernate,Jersey和Netty。这些开源框架因其可靠性,可维护性和高性能而受到称赞。
考虑到微服务架构的模块化特性,测试变得相当棘手,需要多个层。
考虑到Java微服务为软件开发过程带来的好处,难怪它们变得越来越流行。但是你应该记住,一切都是为了它的价格,仔细权衡这种架构的优缺点以满足你的需求。