(一)搭建微服务分布式项目,前后端分离

目录

微服务

SpringCloud框架

搭建SpringCloud项目

注册中心 Eureka

配置商品服务

 配置订单服务


微服务

        首先了解什么是微服务。对比单体应用架构,把一个项目打包部署到一个服务器上。

微服务架构是把多个小项目打包部署到多个服务器上。

        作用:面向互联网用户,抖音,淘宝,天猫...... 带来的问题:高并发,高可用,高性能

适合用于大型项目,面向互联网用户。

 微服务优点:

1,单个项目复杂性降低

2,提高版本迭代频率,项目技术提升更方便

3,提高可扩展性,可以增加多个服务器,不用再只提高一个服务器的硬件

4,每个服务器部署的项目小,反应速度加快,提高可用性

5,多个服务器,一个出问题其它服务器可以代替,提高可用性

缺点 :

成本提高,项目开发难度大大提升,运维难度提高。

SpringCloud框架

 开发微服务的架构:

  • zookeeper + dubbo 比较早的架构,很多需要自己搭建
  • SpringCloud 目前比较成熟的框架,功能比较全面,开发更加容易

主要的组件:

  • 注册中心,服务的注册和发现机制,Eureka、Nacos、Zookeeper等

  • 配置中心,集中管理服务的配置文件,Config、Nacos

  • API网关,实现路由和权限管理,Zuul、Gateway

  • 服务通信,实现Restful的服务调用,Openfeign、Dubbo

  • 负载均衡,平衡每个服务的负载量,Ribbon

  • 熔断器,提高系统的可靠性,Hystrix、Sentinel

  • 分布式事务,全局事务管理多个服务,Seata

搭建SpringCloud项目

基于spring boot,存在版本兼容问题,创建时需要锁定springboot版本

接下来使用idea创建一个springcloud项目:

第一步:file-->new-->project,选择下面的版本,点击next.

 第二步:选择版本号,设置项目名称

 第三步:选择要创建项目需要的框架

 最后点击下一步,设置要保存项目的路径就等待创建完成。

效果如图:

因为是微服务,需要把项目部署到多个服务上,就在这个项目下创建多个spring cloud项目。

在此之前,思考一个问题。多个服务之间,怎么来相互调用对方服务器上的资源。

注册中心 Eureka

服务的提供者和服务的消费者都在注册中心上注册(保存IP和端口),服务消费者调用服务提供者时通过注册中心查找对方服务器的IP和端口,进行通信。

现在接着上面的步骤创建三个子项目,选择新建moudle,重复上面创建spring cloud操作。eureka(注册中心),product(商品服务),order(订单客服务)

如下图:

 user(用户模块)gataway(API网关) config(配置中心) 这三个服务可以暂时不创建。之后使用到再创建。

首先进行注册中心的配置

第一步,需要将父项目(pom.xml)的依赖继承给子项目,并且导入依赖

如图:将父项目的版本复制到子项目的<parent>下

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

 

 第二步 设置配置文件 配置如下

#服务端口号
server.port=8888
#服务名
spring.application.name=eureka-server
#ip地址
eureka.instance.hostname=127.0.0.1
#是否拉取清单
eureka.client.fetch-registry=false
#是否注册到服务器上
eureka.client.register-with-eureka=false
#配置服务路径
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

第三步,启动类上添加注解 

@EnableEurekaServer

 这样,注册中心就配置完成了。

配置商品服务

第一步,需要将父项目(pom.xml)的依赖继承给子项目,并且导入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

第二步,编写配置文件,与注册中心同样的文件下

server.port=8001
spring.application.name=product-service
eureka.client.register-with-eureka=true
eureka.client.refresh.enable=true
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8888/eureka/

第三步,在启动类上添加注解

@EnableEurekaClient

创建商品实体类(自己定义属性),创建controller层,提供一个获得商品的接口,如图

 配置订单服务

        根据上面商品服务创建一个订单服务,端口号和服务名称不能重复,唯一不同的是,订单服务需要调用商品服务的接口和信息。

        这时需要配置一个RestTemplate的配置类,来实现一个服务调取另一个服务的信息(必须是rest风格)。

 controller层

实体类需要加入商品类属性。url是要调用的:服务名/接口。

最后,先启动配置中心 ,再启动商品服务和订单服务。

在浏览器输入ip地址+端口号+接口,即可出现对应的商品信息。

 

这样,一个基本的分布式项目就搭建成功。 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值