假如我们在一个项目中开发了所有的功能,那么它就被称为基于单体架构的应用程序。
将应用程序打包成jar/war,部署到服务器中。
由于整个应用程序包含了所有功能,它将成为 fat jar/war。
优点 1) 易于开发和管理。 2)一切都在一个地方。 3)只需配置一次。
缺点 1)维护困难 2)单点故障 3) 如果我们执行任何变更,整个项目将被重新部署和测试。 4) 开发人员可能不了解整个模块,因此开始修复问题更加困难。 5) 如果一个模块负载过大,我们需要创建多个完整应用程序的例子,因为每个模块紧密耦合,它会占用大量的空间。
为了克服单体问题,微服务架构应运而生
立即学习“Java免费学习笔记(深入);
微服务架构微服务不是编程语言、框架或 api。微服务是一种架构设计模式。
建议通过松散耦合开发微服务应用程序功能。
我们不会在单个项目中开发微服务架构中的所有功能。我们将项目功能分为多个rest。 api。
微服务不仅与java有关。微服务架构可用于任何具有编程语言的项目。
微服务是我们开发小型服务的一种方式。每个服务都在自己的容器/流程/服务器上运行。服务应该是轻量级的,可以独立部署。这可以实现更快的开发、部署和可扩展性。
正如您所看到的,单个应用程序的员工模块、客户模块、地址模块和课程模块现在已经转换为小型服务,因此它们就像员工服务、客户服务、地址服务和课程服务一样。在单个应用程序中,使用单个数据库,但在微服务应用程序中,每个服务都有自己的数据库。它们现在相互依赖。每个服务都在相互通信,其余的都在呼叫。
优点
- 技术独立(我们可以使用python、后端apigo等多种技术开发)
数据库独立性。
每一项服务都是独立的(松散耦合),所以我们可以独立部署每一项服务。
若在任何服务中执行任何变更,则无需部署所有服务,只需部署一项服务即可。
不需要了解整个应用程序来开发服务。
单个微服务的故障不会影响整个应用,增强整体弹性。
较小的代码库和注意事项的分离使得维护和调试更容易管理。
由于其小而独立的性质,每个微服务都可以根据需要独立扩展,而无需扩展整个应用程序。
每个服务都可以进行不同的测试。
缺点
- 如果我们想改变一个服务配置,我们需要改变每个服务配置。例如,我所有项目中的每个项目 application.properties 公共属性存在于文件中。
company.name=tier3Hub
因此,如果我们想更改公司名称,所有服务都需要更改名称。
由于服务之间的相互依赖和交互,基于微服务的应用程序测试可能会更加复杂。
每个服务将处理一定数量的请求,然后如果我们发送的请求超过服务,请求将被关闭。因此,我们需要多个服务示例来平衡客户端的请求和不同示例中的路由,并将请求路由转移到我们服务的不同示例中。但是 java 很难编写负载均衡器。
java为开发rest提供了spring-boot的框架 api,spring-boot提供了许多功能,如自动配置和嵌入式服务器。如果我们想开发服务,我们需要部署sech服务server和spring-boot来提供tomcat服务器,因此每个服务都运行在tomcat的不同端口。例如,在端口提供员工服务 8080 在端口运行,课程服务 8081 上运行,每个服务都有自己的服务器。
在 spring-boot 在快速开发、配置少、生产就绪应用程序的帮助下, stater 项目的功能
spring框架中有一个叫做spring cloud项目提供现成的微服务支持,spring 为了快速开发微服务,cloud提供了一些通用的工具和技术。
spring cloud 专注于为典型用例提供良好的开箱即用体验,并提供覆盖其他用例的可扩展机制- 分布式/版本化配置
- 注册和发现服务
- 路由
- 服务调用到服务
- 负载均衡
- 断路器
- 分布式新闻传递
- 短期微服务(任务)
- 合同测试由消费者驱动,由生产者驱动。
我们没有固定的微服务架构,开发人员根据项目需要定制微服务架构,大多数项目使用以下组件。
1) 服务注册中心(eureka 服务器)
2) 服务(rest api)
3)服务间通信(feginclient)
4) api网关
5) 管理服务器
6) 拉链
结论java 微服务改变了我们软件开发的方式,将灵活性、可扩展性和弹性提升到了一个新的水平。 java 丰富的生态系统和 spring boot、micronaut 结合框架,使其成为构建能够满足现代应用需求的微服务的绝佳选择。
当我们探索这个架构时,很明显为什么微服务比传统的单一应用程序更受欢迎。它们提供模块化和独立性,允许团队单独开发、部署和扩展服务。这在云本土功能日益成为标准的世界中尤为有价值。然而,这一过程也暴露了确保数据一致性、管理服务间通信、维护跨服务强大安全等挑战。
使用微服务了解工具和实践的最新进展 java 开发人员非常重要。随着环境的不断发展,适应的人将最有能力充分利用这种结构的潜力。 java 微服务的未来似乎充满希望,框架和工具不断改进,越来越多渴望分享知识和经验的开发人员得到了社区的支持。
在 java 微服务的使用意味着为创建更灵活、可扩展和可维护的应用程序打开了大门。开发人员可以通过遵循最佳实践,致力于持续学习,释放软件开发的新可能性,从而带来更创新、更高效的解决方案。
以上就是使用 Java Spring Boot 构建可扩展的微服务:最佳实践和技术第一 -1 详情请关注图灵教育的其他相关文章!