微服务/分布式初始

1.单体服务架构的特点

当服务单一、规模小、逻辑简单时,用一个单体服务就挺

单体服务的缺点

2.分布式架构的特点

使每个服务之间的耦合度降低,不再会有牵一发而动全身的风险。每个服务分别部署在相同或不同的服务器上,各自运行,也能避免因一个服务器或者一个模块、服务的失败或错误,导致整个项目宕机

分布式架构的缺点:服务之间调用变得复杂,维护成本变得更高

3.微服务的架构特征

优点:服务拆分粒度更小,服务更独立,耦合度更低

缺点:架构非常复杂,运维,监控,部署难度更高。

4.走进微服务(最重要的图)

分为四大部分  注册中心、配置中心、服务网关、集群服务

 总结

4.如何快速搭建一个分布式项目(重点)

1.创建一个maven项目

2.删除工程中最大的的src文件  

3.修改pom.xml文件中的内容,添加如下 

    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.9.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR10</spring-cloud.version>
        <mysql.version>5.1.47</mysql.version>
        <mybatis.version>2.1.1</mybatis.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

父项目搭建成功,以后有公共的依赖就可以放到父项目的pom.xml中。

4.创建新的模块

5.新模块中的pom.xml添加一下内容 

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
    <build>
       	<finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

在新模块下创建各个层对应的相关目录和主类

 添加启动项

 6.添加配置文件,两种yml和properties,一般使用yml。

 配置文件代码如下 

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testwxx?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
      name: orderservice
eureka:
      client:
        service-url:
          defaultZone: http://127.0.0.1:10086/eureka
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS

这样就配置完成了 

2.注册RestTemplate

首先,我们在order-service服务中的OrderApplication启动类中,注册RestTemplate实例:

 

 实现远程调用

 Eureka 注册中心

Eureka的结构和作用

作用  注册服务,拉取服务,负载均衡,远程调用。 

搭建eureka-server

首先大家注册中心服务端:eureka-server,这必须是一个独立的微服务

1.创建eureka-server服务 就是创建一个mouduled

 2.引入eureka依赖

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

3.编写启动类

package com.tledu.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

 

 

4.编写配置文件

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

配置完成启动服务

服务注册

其实就是在其他模型的配置文件中吧eureka-server 注册进去

步骤如下

在user-service的pom文件中,引入下面的eureka-client依赖:

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

配置文件 地址和eureka 的地址一样

  启动多个user-service实例

首先,复制原来的user-service启动配置:

 然后,在弹出的窗口中,填写信息:

 

 服务拉取和负载均衡

最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡。

不过这些动作不用我们去做,只需要添加一些注解即可。

在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值