尚医通项目总结(一)———-微服务、Spring Boot和Spring Cloud的区别

跟着尚硅谷做了尚医通项目来学习,原本以为知识点并不是很多,面试后发现如果深挖,有很多需要学习理解的点,此系列博客记录项目中涉及的知识点,也希望能帮助到做了同一个项目的同学。博客中的知识点都是自己搜集资料总结,如有错误欢迎指出!

此项目使用Spring Cloud技术栈,各个微服务站点基于Spring Boot构建。要了解这个项目,首先就要了解什么是微服务。

1.微服务

微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。微服务架构使得应用程序更易于扩展和更快地开发。使用微服务架构可以将应用程序构建为独立的组件,并将每个应用程序进行作为一项服务运行。在对服务进行更新的时候不向整体式架构那样复杂,只需要针对各项服务进行更新、部署和扩展即可。 简单来讲,微服务将一个复杂的应用拆分成多个独立自治的服务,服务和服务之间通过松耦合的形式交互。

此处出现第一个面试问题:

你的项目微服务是怎么拆分的?

这个项目的微服务拆分首先是根据业务功能进行的拆分,比如用户服务、医院服务、订单服务这几个微服务,都是按照功能维度对微服务进行拆分的。考虑到系统的复用性,由于在登录和订单服务中都用到了阿里云的短信服务,所以将短信服务独立出来。

微服务的结构搭建起来了,但是各个微服务之间并不是毫不相关的,微服务之间需要进行一些通信,那么

微服务之间的通信方式是什么?

微服务之间的通信方式分为两种,一是同步调用,二是异步调用。对于同步调用,该项目使用到了SpringCloud中的Feign组件来实现,对于异步调用,使用到的是RabbitMQ消息队列。在实现同步调用时,将调用功能封装到了一个新的模块中(项目中的service-client模块)。在该模块的pom文件中引入openfeign依赖,新建一个接口进行调用封装。使用@FeignClient注解来表明要调用的服务的名称,这个名称是nacos中注册的名称,然后在接口内部,将要调用的方法直接粘过来,并在Mapping注解中补充完整方法的路径。在参数的@PathVariable注解中也要指定参数的名称。最后还需要在使用到的微服务模块进行调用,在相应的pom文件中引入对应的client依赖,在需要调用的地方使用@Autowired注解把接口注入,至此,使用Feign组件完成了远程调用。(图上是feign示例)使用消息队列进行异步通信涉及到的问题太多,下次再总结!

尚医通项目总结(一)----------微服务、Spring Boot和Spring Cloud的区别

2.Spring Boot和Spring Cloud

Spring是一个生态体系,包含了Spring Framework、Spring Boot、Spring Cloud等。

Spirng Cloud是基于Spring Boot的微服务解决方案。它为开发者提供了很多工具,用于快速构建分布式系统的一些通用模式,例如:配置管理、注册中心、服务发现、限流、网关、链路追踪等。 SpringCloud是一系列框架的集合,可以包含SpringBoot,它是离不开SpringBoot的,但是SpringBoot是可以单独使用的。

SpringBoot只是一个快速开发框架,算不上是微服务框架。SpringCloud+SpringBoot实现微服务开发,是SpringCloud具备微服务开发的核心技术RPC远程调用技术,SpringBoot的web组件默认继承了SpringMVC,可以实现HTTP+JSON的轻量级传输,编写微服务接口,所以SpringCloud依赖SpringBoot框架实现微服务开发。

以上是个人暑期实习面试中遇到的一些关于该项目的问题总结,如有错误欢迎指出,如有其他问题,也欢迎一起讨论!

Original: https://www.cnblogs.com/boboray/p/16230406.html
Author: 啵啵ray
Title: 尚医通项目总结(一)———-微服务、Spring Boot和Spring Cloud的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/569109/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [Java][Spring]spring profile与maven profile多环境管理

    spring profile 与 maven profile 多环境管理 spring profile Spring profile是 Spring提供的多环境管理方案。 如下图:…

    Java 2023年6月5日
    073
  • postmassage用法

    1、主页面 allow=”camera ; microphone “作用是开放音频权限 <template> <section class…

    Java 2023年6月8日
    073
  • JDK8新特性

    1、语法:完整的Lambda表达式由三部分组成:参数列表、箭头、声明语句 2、绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型,所以参数可以省略 3、当l…

    Java 2023年5月30日
    055
  • 复试项目规划

    面试。采用综合性、开放性的能力型试题,试题由考生随机抽取,面试时间为每位考生25分钟左右。主要内容为三部分: ①外语听力、口语测试,测试时间为每位考生5分钟左右,满分100分,60…

    Java 2023年6月5日
    052
  • 球队比赛预测

    一,乒乓球预测: 比赛规则:(1)一局比赛:在一局比赛中,先得11分的一方为胜方:10平后,先多得2分的一方为胜方。 (2)一场比赛:单打的淘汰赛为七局四胜制,双打淘汰赛或团体赛为…

    Java 2023年6月6日
    098
  • Java-Security(六):Spring Security启动加载MySecurityConfig(WebSecurityConfigurerAdapter)/WebSecurity/HttpSecurity(xxxConfigurer、filters)流程

    本章文件分为三个部分: 1)在进行Spring Security加载流程分析之前,我们需要先了解下WebSecurityConfigurerAdapter; 2)SpringBoo…

    Java 2023年5月29日
    079
  • 记一次 .NET 某工控数据采集平台 线程数 爆高分析

    一:背景 1. 讲故事 前几天有位朋友在 B站 加到我,说他的程序出现了 &#x7EBF;&#x7A0B;&#x6570; 爆高的问题,让我帮忙看一下怎么回…

    Java 2023年5月30日
    065
  • 13.数组string关于length

    数组没有length()这个方法,有length属性 string有length()这个方法。 length不是方法,是属性,数组的属性;length()是字符串String的一个…

    Java 2023年6月9日
    093
  • 小学生四则运算–软件工程

    1 package sizeyunsuan; 2 3 import java.util.List; 4 import java.math.BigDecimal; 5 import …

    Java 2023年6月6日
    0108
  • spring接收json字符串的两种方式

    一、前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到。自己测试接口时使用pos…

    Java 2023年6月5日
    084
  • @Async注解的坑,小心

    大家好,我是三友。 背景 前段时间,一个同事小姐姐跟我说她的项目起不来了,让我帮忙看一下,本着助人为乐的精神,这个忙肯定要去帮。 于是,我在她的控制台发现了如下的异常信息: jav…

    Java 2023年6月16日
    076
  • 数据结构:跳跃链表

    关注公众号,一起交流,微信搜一搜: 潜行前行 什么是跳跃链表 开发时经常使用的平衡数据结构有B数、红黑数,AVL数。但是如果让你实现其中一种,很难,实现起来费时间。而跳跃链表一种基…

    Java 2023年6月5日
    0102
  • SpringCloud——客户端服务适配配置中心

    1.前提 配置中心已经完成配置 2.添加依赖 3.修改application.yml为bootstrap.yml 4.修改bootstrap.yml 除了以下配置,其它配置放到gi…

    Java 2023年5月30日
    082
  • java线程中yield(),sleep(),wait()区别详解

    1、sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访…

    Java 2023年5月29日
    076
  • 敏捷培训有感

    一周前参加了个关于敏捷的培训,今天回想起来,记忆最深的是两个游戏环节。 游戏一 组装 10 只同样小狗,每只小狗需要 5 块积木,流水线上 5 个人,每人负责固定的一块积木的拼接。…

    Java 2023年6月16日
    070
  • Java面试题整理

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球