详解Java 微服务架构

 更新时间:2021年02月02日 10:44:48   作者:程序员曾曾  
这篇文章主要介绍了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 微服务架构的资料请关注脚本之家其它相关文章!

相关文章

  • springboot+jwt+微信小程序授权登录获取token的方法实例

    springboot+jwt+微信小程序授权登录获取token的方法实例

    本文主要介绍了springboot+jwt+微信小程序授权登录获取token的方法实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java中Spring的Security使用详解

    Java中Spring的Security使用详解

    这篇文章主要介绍了Java中Spring的Security使用详解,在web应用开发中,安全无疑是十分重要的,选择Spring Security来保护web应用是一个非常好的选择,需要的朋友可以参考下
    2023-07-07
  • Mybatis使用连表查询的操作代码

    Mybatis使用连表查询的操作代码

    这篇文章主要介绍了Mybatis如何使用连表查询,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 关于Java中的IO流总结(推荐)

    关于Java中的IO流总结(推荐)

    下面小编就为大家带来一篇关于Java中的IO流总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Springboot+rabbitmq实现延时队列的两种方式

    Springboot+rabbitmq实现延时队列的两种方式

    这篇文章主要介绍了Springboot+rabbitmq实现延时队列的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Java实现对象列表导出为excel表格的实用工具类

    Java实现对象列表导出为excel表格的实用工具类

    这篇文章主要为大家详细介绍了Java如何实现对象列表导出为excel表格的实用工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Java获取e.printStackTrace()打印的信息方式

    Java获取e.printStackTrace()打印的信息方式

    这篇文章主要介绍了Java获取e.printStackTrace()打印的信息方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring Boot 整合持久层之JdbcTemplate

    Spring Boot 整合持久层之JdbcTemplate

    持久层是 Java EE 中访问数据库的核心操作,Spring Boot 中对常见的持久层框架都提供了自动化配置,例如 JdbcTemplate 、 JPA 等,Mybatis 的自动化配置则是 Mybatis 官方提供的
    2022-08-08
  • java 获取路径的各种方法(总结)

    java 获取路径的各种方法(总结)

    下面小编就为大家带来一篇java 获取路径的各种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Mybatis update数据库死锁之获取数据库连接池等待

    Mybatis update数据库死锁之获取数据库连接池等待

    这篇文章主要介绍了Mybatis update数据库死锁之获取数据库连接池等待的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07

最新评论