当前位置: 首页 > 编程笔记 >

详解Java 微服务架构

云项禹
2023-03-14
本文向大家介绍详解Java 微服务架构,包括了详解Java 微服务架构的使用技巧和注意事项,需要的朋友参考一下

一、传统的整体式架构

传统的整体式架构都是模块化的设计逻辑,如展示(Views)、应用程序逻辑(Controller)、业务逻辑(Service)和数据访问对象(Dao),程序在编写完成后被打包部署为一个具体的应用。如图所示:

系统的水平扩展

如果要对系统进行水平扩展,通常情况下,只需要增加服务器的数量,并将打包好的应用拷贝到不同的服务器,然后通过负载均衡器(Nginx)就可以轻松实现应用的水平扩展。

整体式架构的缺点

  • 应用复杂度增加,更新、维护困难。
  • 易造成系统资源浪费。
  • 影响开发效率。
  • 应用可靠性低。
  • 不利于技术更新。

二、面向服务的架构SOA(Service-Oriented Architecture)

SOA的思路是把应用中相近的功能聚合在一起,以服务的形式提供出去。如图所示:

缺点

虽然SOA解决了整体式架构中的问题,但多数情况下,SOA中相互独立的服务仍然会部署在同一个运行环境中。和整体式架构类似,随着业务功能的增多,SOA的服务会变得越来越复杂。本质上看,整体式架构的问题并没有因为使用SOA而变得更好。

三、微服务架构

微服务架构是一种架构风格和架构思想,它倡导我们在传统软件应用架构的基础上,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以独立承担对外服务的职责,通过此种思想方式所开发的软件服务实体就是“微服务”,而围绕着微服务思想构建的一系列结构(包括开发、测试、部署等),我们可以将它称之为“微服务架构”。如图所示:

缺点

  • 开发人员必须处理创建分布式系统的复杂性。
  • 部署的复杂性。
  • 增加内存消耗。

微服务架构与SOA的区别

四、如何构建微服务架构

微服务架构的组件

(1)服务注册中心:注册系统中所有服务的地方。

(2)服务注册:服务提供方将自己调用地址注册到服务注册中心,让服务调用方能够方便地找到自己。

(3)服务发现:服务调用方从服务注册中心找到自己需要调用服务的地址。

(4)负载均衡:服务提供方一般以多实例的形式提供服务,使用负载均衡能够让服务调用方连接到合适的服务节点。

(5)服务容错:通过断路器(也称熔断器)等一系列的服务保护机制,保证服务调用者在调用异常服务时能快速地返回结果,避免大量的同步等待。

(6)服务网关:也称为API网关,是服务调用的唯一入口,可以在这个组件中实现用户鉴权、动态路由、灰度发布、负载限流等功能。

(7)分布式配置中心:将本地化的配置信息(properties、yml、yaml等)注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的迁移。

微服务架构的技术选型

(1)微服务实例的开发:SpringBoot

(2)服务的注册与发现:Spring Cloud Eureka

(3)负载均衡:Spring Cloud Ribbon

(4)服务容错:Spring Cloud Hystrix

(5)API网关:Spring Cloud Zuul

(6)分布式配置中心:Spring Cloud Config

(7)调试:Swagger

(8)部署:Docker

(9)持续集成:Jenkins

以上就是详解Java 微服务架构的详细内容,更多关于Java 微服务架构的资料请关注小牛知识库其它相关文章!

 类似资料:
  • 本文向大家介绍详解SpringCloud微服务架构之Hystrix断路器,包括了详解SpringCloud微服务架构之Hystrix断路器的使用技巧和注意事项,需要的朋友参考一下 一:什么是Hystrix 在分布式环境中,许多服务依赖项中的一些将不可避免地失败。Hystrix是一个库,通过添加延迟容差和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,停止其间的

  • Kubernetes 设计之初就是按照 Cloud Native 的理念设计的,Cloud Native 中有个重要概念就是微服务的架构设计,当将单体应用拆分微服务后, 随着服务数量的增多,如何微服务进行管理以保证服务的 SLA 呢?为了从架构层面上解决这个问题,解放程序员的创造性,避免繁琐的服务发现、监控、分布式追踪等事务,Service mesh 应运而生。 微服务 下图是Bilgin Ibr

  • 让我们讨论一下微服务环境的体系结构。我们正在公司内部进行讨论,我想得到一些反馈。我认真考虑的是编排层(代码复制、更多移动部件改变api)。 网络应用- 原料药- 在这种情况下,服务不允许相互对话。业务流程层中的聚合服务 网络应用- 原料药- 这里允许服务相互对话,这里存在聚合服务。 账单属于哪里

  • 我读了一些文章,看了一些视频,但在为这些微服务提供服务方面,没有找到具体的建议。我的理解是,他们应该使用自己的应用程序服务器。 我的问题是它们应该部署在不同的服务器上,还是没关系。 当它们在同一台服务器(计算机)上提供服务时,不会有端口冲突吗?

  • 本文向大家介绍详解.NET Core+Docker 开发微服务,包括了详解.NET Core+Docker 开发微服务的使用技巧和注意事项,需要的朋友参考一下 .NET Core发布很久了,因为近几年主要使用java,所以还没使用过.NET Core,今天正好有一个c#写的demo,需要做成服务,不想再转成java来实现,考虑使用.NET CORE来尝下鲜,目标是开发一个微服务,然后部署到Dock

  • 本文向大家介绍什么是微服务架构?相关面试题,主要包含被问及什么是微服务架构?时的应答技巧和注意事项,需要的朋友参考一下 在前面你理解什么是微服务,那么对于微服务架构基本上就已经理解了。 微服务架构 就是 对微服务进行管理整合应用的。微服务架构 依赖于 微服务,是在微服务基础之上的。 例如:上面已经列举了什么是微服务。在医院里,每一个科室都是一个独立的微服务,那么 这个医院 就是 一个大型的微服务架