微服务环境搭建
创始人
2024-02-15 07:51:48
0

目录

一,微服务介绍

 单体架构介绍

 垂直应用架构

分布式架构

SOA架构

微服务架构

 二,微服务架构简介

三,微服务搭建

 模块设计

创建步骤 


一,微服务介绍

系统架构大体经历了下面几个过程: 单体应用架构--->垂直应用架构--->分布 式架构--->SOA架构--->微服务架构

 单体架构介绍

互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这 样可以减少开发、部署和维护的成本。 比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块, 我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。

如图所示

 

优点:

 项目架构简单,小型项目的话, 开发成本低

项目部署在一个节点上, 维护方便

缺点:

全部功能集成在一个工程中,对于大型项目来讲不易开发和维护

项目模块之间紧密耦合,单点容错率低

无法针对不同模块进行针对性优化和水平扩展

 垂直应用架构

随着访问量的逐渐增大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块 都会有比较大的访问量. 还是以上面的电商为例子, 用户访问量的增加可能影响的只是用户和订单模块, 但是对消息模块 的影响就比较小. 那么此时我们希望只多增加几个订单模块, 而不增加消息模块. 此时单体应用就做不 到了, 垂直应用就应运而生了. 所谓的垂直应用架构,就是将原来的一个应用拆成互不相干的几个应用,以提升效率。比如我们可 以将上面电商的单体应用拆分成:

  • 电商系统(用户管理 商品管理 订单管理)

  • 后台系统(用户管理 订单管理 客户管理)

  • CMS系统(广告管理 营销管理)

这样拆分完毕之后,一旦用户访问量变大,只需要增加电商系统的节点就可以了,而无需增加后台 和CMS的节点

如图所示

 

 优点:

        系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展

        一个系统的问题不会影响到其他系统,提高容错率

缺点:系统之间相互独立, 无法进行相互调用

           系统之间相互独立, 会有重复的开发任务

分布式架构

 当垂直应用越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码 抽取出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢? 这就产生了新的分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务 逻辑。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

 如图所示

 优点:

        抽取公共的功能为服务层,提高代码复用性

缺点:

       系统间耦合度变高,调用关系错综复杂,难以维护   

SOA架构

 在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加 一个调度中心对集群进行实时管理。此时,用于资源调度和治理中心(SOA Service Oriented Architecture,面向服务的架构)是关键。

 如图所示

 优点:

        使用注册中心解决了服务间调用关系的自动调节

缺点:

        服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 )

        服务关心复杂,运维、测试部署困难

微服务架构

 微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"。

如图所示

优点:

         1.服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展

        2. 微服务之间采用Restful等轻量级http协议相互调用

缺点:

        分布式系统开发的技术成本高(容错、分布式事务等)

 二,微服务架构简介

微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独 立运行的项目。

 微服务架构常见问题

一旦采用微服务系统架构,就势必会遇到这样几个问题:

  • 这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])

  • 这么多小服务,他们之间如何通讯?(restful rpc)

  • 这么多小服务,客户端怎么访问他们?(网关)

  • 这么多小服务,一旦出现问题了,应该如何自处理?(容错)

  • 这么多小服务,一旦出现问题了,应该如何排错? (链路追踪)

对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一 个问题提供了相应的组件来解决它们。

 

 微服务架构的常见概念

服务治理

        服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现。

服务注册:

        服务实例将自身服务信息注册到注册中心。

服务发现:

        服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提 供的服务。

服务剔除

        服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。

服务调用 

在微服务架构中,通常存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于 HTTP的RESTful接口以及基于TCP的RPC协议。

  • REST(Representational State Transfer) 这是一种HTTP调用的格式,更标准,更通用,无论哪种语言都支持http协议

  • RPC(Remote Promote Call) 一种进程间通信方式。允许像调用本地服务一样调用远程服务。RPC框架的主要目标就是让远程服 务调用更简单、透明。RPC框架负责屏蔽底层的传输方式、序列化方式和通信细节。开发人员在使 用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节 和调用过程。

 区别与联系

三,微服务搭建

 模块设计

首先建立一个父工程,在父工程中创建基础模块。在这个基础模块中创建公共模块【实体类】 之后在此工程中建立微服务。以下建立三个微服务,shop-user 用户微服务【端口: 807x】 shop-product 商品微服务 【端口: 808x】 shop-order 订单微服务 【端口: 809x】

 如图所示

 微服务调用

在微服务架构中,最常见的场景就是微服务之间的相互调用。我们以电商系统中常见的用户下单为 例来演示微服务的调用:客户向订单微服务发起一个下单的请求,在进行保存订单之前需要调用商品微 服务查询商品的信息。 我们一般把服务的主动调用方称为服务消费者,把服务的被调用方称为服务提供者。 在这种场景下,订单微服务就是一个服务消费者, 商品微服务就是一个服务提供者。

结构图: 

创建步骤 

步骤:

         1 创建模块 导入依赖

        2 创建SpringBoot主类

        3 加入配置文件

        4 创建必要的接口和实现类(controller service dao)

 创建父工程

选择新建项目,选择maven,选择对应jdk后直接下一步(比用勾选任何选项)

 点击下一步,命名自行定义,在然后在这个maven项目中创建微服务

首先在父工程中创建基础模块 (右键或是找到file新建一个模块,如下图选中Spring Initializr)

 点击next自行命名,这里就不展示了,在点击下一步后,如下图(不用勾任何东西直接下一步),因为后续直接导入一些相关依赖即可

 下一步,下一步就完成了。

创建好基础模块后导入相关依赖


4.0.0org.exampleSpring-Cloud1.0-SNAPSHOTshop-commonpom1.8UTF-8UTF-82.3.2.RELEASEHoxton.SR92.2.6.RELEASEorg.springframework.bootspring-boot-dependencies${spring-boot.version}pomimport

创建相应的实体类 

package com.dengxiyan.model;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;//用户
@NoArgsConstructor
@AllArgsConstructor
@Data//不再去写set和get方法
public class User {private Integer uid;//主键private String username;//用户名private String password;//密码private String telephone;//手机号
}

下一步就创建微服务(在每个微服务中的pom.xml中都引入了基础模块的配置)

步骤与创建主模块的步骤一致

然后导入相关依赖


Spring-Cloudorg.example1.0-SNAPSHOT4.0.0shop-orderorg.springframework.bootspring-boot-starter-webcom.dengxiyanshop-common1.0-SNAPSHOT

编写主类

package com.dengxiyan.shoporder;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ShopOrderApplication {public static void main(String[] args) {SpringApplication.run(ShopOrderApplication.class, args);}}

创建配置文件(由于这边没有连接数据库,配置文件中就不需要关于数据库的相关配置以及其他多余的配置)注意:每个微服务访问的端口号是不一致的,避免到时候冲突

spring:application:name: shop-order
server:port: 8090

在写完配置文件后,如图标记,选中第一个

 由于访问的微服务不止一个,如不选中上图中的视图,项目就无法访问

以下是需要配置文件是需连接数据库的

server:port: 8071
spring:application:name: service-userdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=trueusername: rootpassmima: sasajpa:properties:hibernate:hbm2ddl:auto: updatedialect: org.hibernate.dialect.MySQL5InnoDBDialect

由于没有连接数据库的原因,数据只能用固定的

创建Controller层

package com.dengxiyan.springuser.controller;import com.dengxiyan.model.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author dxy* @site www.javadxy.com* @company ds公司* @create  2022-11-24 16:21*/
@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/get/{id}")public User get(@PathVariable("id") Integer id){//查询数据库return new User(id,"熊二","123","1578902345");}
}

其他微服务按照以上的步骤取创建即可。然后启动项目

相关内容

热门资讯

优缺点自我评价 优缺点自我评价最近觉得自己的缺点太多了,赶紧来自我评价一下,以便及时更新软件,让硬件更好的发挥最大效...
学生自我评价简短范文 学生自我评价简短范文  自我评价怎么写  自我评价的内容一般从四个方面去写;  一、学业上  大学里...
教育实习生自我鉴定 教育实习生自我鉴定(通用11篇)  自我鉴定是个人对一个时间段的自我总结,自我鉴定可以让我们对自己有...
个人思想道德品质自我评价 个人思想道德品质自我评价(通用15篇)  在日常学习、工作和生活中,许多人都需要写自我评价,自我评价...
大专学生毕业自我鉴定 大专学生毕业自我鉴定范文(精选19篇)  自我鉴定是对自己过去某一阶段的学习或工作的自我分析和总结,...
工作通用自我评价 工作通用自我评价  在生活、工作和学习中,我们都不可避免地要写自我评价,自我评价直接影响学习和参与社...
医德考评自我评价 医德考评自我评价11篇  在学习、工作、生活中,我们都需要频繁使用自我评价,自我评价具有重要的社会功...
军训训练自我鉴定 军训训练自我鉴定(精选8篇)  自我鉴定即为自我总结,自我鉴定使我们及时找出错误并改正,不妨让我们用...
大学生毕业登记表自我鉴定 大学生毕业登记表自我鉴定(通用17篇)  自我鉴定是个人在一个时期的自我总结,写自我鉴定有利于我们工...
幼师专业自我鉴定 幼师专业自我鉴定(通用14篇)  自我鉴定是个人对一个时期的学习或工作进行自我总结,它可以帮助我们了...
用英文自我评价 用英文自我评价(通用14篇)  无论是身处学校还是步入社会,我们经常会被要求写一份自我评价,自我评价...
学员自我鉴定 学员自我鉴定七篇  自我鉴定是个人在一个时期的自我总结,自我鉴定可以提升自身总结能力,因此好好准备一...
见习自我鉴定 见习自我鉴定(精选16篇)  自我鉴定是个人在一个时期对自己的学习或工作生活的自我总结,自我鉴定使我...
大一自我鉴定总结 大一自我鉴定总结  自我总结是一个人在某个阶段的学习和工作生活等表现的一个自我总结,写自我总结有利于...
实习转正自我评价 实习转正自我评价 实习转正自我评价 本文由自我评价网提供参考! 转眼间2个月试用期已接近尾声,首先感...
护理毕业生自我鉴定 精选护理毕业生自我鉴定4篇  自我鉴定是个人对一个时间段的自我总结,自我鉴定就可以促使我们思考,因此...
电大毕业自我鉴定 有关电大毕业自我鉴定汇编5篇  自我鉴定是对一个阶段的学习或工作进行回顾检查并分析评价,自我鉴定可以...
电大毕业生自我鉴定 【精品】电大毕业生自我鉴定4篇  正常来讲,自我鉴定即为自我总结,自我鉴定可以使我们更有效率,为此要...
自我评价五年级作文 自我评价五年级作文自我评价五年级作文1  在日复一日的学习、工作或生活中,我们或多或少都会遇到需要写...
护理实习自我鉴定 护理实习自我鉴定15篇  自我鉴定是对自己的政治思想、工作业务、学习生活等方面情况进行评价与描述,自...