分秒必争网

【云原生】一篇打通微服务架构,nacos + gateway + Redis + MySQL + docker

【云原生】一篇打通微服务架构,nacos + gateway + Redis + MySQL + docker

目录

    • 一、云原前期准备
      • 1、生篇安装MySQL5.7
      • 2、打通安装nacos
      • 3、微服务架安装Redis
    • 二、云原创建父工程
    • 三、生篇创建gateway子工程
      • 1、打通pom文件
      • 2、微服务架配置文件
      • 3、云原启动类
    • 四、生篇创建management管理模块
      • 1、打通pom文件
      • 2、微服务架配置文件
      • 3、云原启动类
    • 五、生篇整合mybatis
      • 1、打通user表设计
      • 2、UserController
      • 3、UserService
      • 4、UserMapper
      • 5、User
      • 6、postman接口测试
    • 更多精彩内容:

一、前期准备

本项目暂定项目名GooReeyProject,SpringBoot + Vue构建,具体项目内容未定。

基本架构nacos、gateway、Linux、Redis、rabbitMQ、MySQL、docker、Vue。

1、安装MySQL5.7

2、安装nacos

我安装的是window版的nacos和MySQL,安装nacos时需要注意,要讲配置文件中的集群版改为单机版,才能启动!

3、安装Redis

二、创建父工程

我觉得主要是pom文件

4.0.0com.guorGooReeyProject    1.0-SNAPSHOT01common02gateway1.0.0127.0.0.1808http1.8Greenwich.SR1true0.2.2.RELEASEpomGooReeyProjectThis is parent projectorg.springframework.bootspring-boot-starter-parent        2.1.4.RELEASEorg.springframework.bootspring-boot-starter-test            testorg.projectlomboklombok            providedcommons-langcommons-lang            2.6com.github.pagehelperpagehelper-spring-boot-starter            1.2.5org.springframework.cloudspring-cloud-starter-alibaba-nacos-discovery        com.alibabadruid            1.1.23org.springframework.cloudspring-cloud-starter-alibaba-nacos-config            0.2.1.RELEASEorg.springframework.cloudspring-cloud-dependencies                ${ spring-cloud.version}pomimportorg.springframework.cloudspring-cloud-alibaba-dependencies                ${ nacos.version}pomimportsrc/main/resources**/*.*src/main/resources**/*.ymltruesrc/main/java**/*.xml

三、创建gateway子工程

1、pom文件

GooReeyProject        com.guor1.0-SNAPSHOT4.0.002gateway     org.mybatis.spring.bootmybatis-spring-boot-starter            2.0.1org.springframework.cloudspring-cloud-starter-gateway        org.springframework.cloudspring-cloud-starter-netflix-hystrix        org.springframework.cloudspring-cloud-starter-alibaba-nacos-config        com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery                org.springframework.cloudspring-cloud-starter-netflix-ribbon                    gateway-${ system.version}

2、配置文件

spring:  application:    name: gateway  cloud:    nacos:      discovery:        server-addr: 127.0.0.1:8848      config:        server-addr: 127.0.0.1:8848        file-extension: yml        ext-config:          - data-id: datasource-share-config.yml            group: SHARE_GROUP            refresh: true          - data-id: log-share-config.yml            group: SHARE_GROUP            refresh: true

(1)gateway.yml

server:  port: 8080      spring:  application:    name: gateway    version: 1.0.0  cloud:    gateway:                            discovery:        locator:          enabled: true          lowerCaseServiceId: true          filters:             - StripPrefix=1           routes:        - id: management          uri: lb:management   # 服务端 service_id          predicates:            - Path=/management/**          filters:             - name: Hystrix               args:                 name: fallbackcmd                fallbackUri: forward:/defaultFallback        - id: demo          uri: lb://demo          predicates:            - Path=/demo/**            hystrix:  command:    default:      execution:        isolation:          strategy: SEMAPHORE          thread:            timeoutInMilliseconds: 1500               

(2)datasource-share-config.yml

spring:  datasource:    url: jdbc:mysql://localhost:3306/blue?serverTimezone=UTC    driverClassName: com.mysql.cj.jdbc.Driver    username: root    password: rootmybatis:  typeAliasesPackage: com.guor.*.bean.**  mapperLocations: classpath*:**/com/guor/**/dao/mapping/*Mapper.xml  configuration:    map-underscore-to-camel-case: true

(3)log-share-config.yml

logging:   path: logs  level:    root: info    com.alibaba.nacos.client.naming: warn   file:     max-size: 20MB    max-history: 30  pattern:     file: "%d{ ${ LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}} ${ LOG_LEVEL_PATTERN:%5p} ${ PID:- } --- [%15.15t] %-40.40logger{ 39} [%5.5line] : %m%n${ LOG_EXCEPTION_CONVERSION_WORD:%wEx}"    console: "%d{ ${ LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}} %clr(${ LOG_LEVEL_PATTERN:%5p}) %clr(${ PID:- }){ magenta} --- %clr([%15.15t]){ faint} %clr(%-40.40logger{ 39}){ cyan} %clr([%5.5line]){ cyan} : %m%n${ LOG_EXCEPTION_CONVERSION_WORD:%wEx}"

3、启动类

package com.guor; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)@EnableDiscoveryClient@EnableScheduling@RefreshScopepublic class GatewayApplication {     public static void main(String[] args) {         SpringApplication.run(GatewayApplication.class, args);        System.out.println("hello world");    }}

四、创建management管理模块

1、pom文件

GooReeyProject        com.guor1.0-SNAPSHOT4.0.003management     88org.springframework.bootspring-boot-starter-web        org.mybatis.spring.bootmybatis-spring-boot-starter            2.0.1org.springframework.cloudspring-cloud-starter-alibaba-nacos-config        mysqlmysql-connector-java        org.springframework.bootspring-boot-starter-jdbc        management-${ system.version}

2、配置文件

spring:  application:    name: management  cloud:    nacos:      discovery:        server-addr: 127.0.0.1:8848      config:        server-addr: 127.0.0.1:8848        file-extension: yml        ext-config:          - data-id: datasource-share-config.yml            group: SHARE_GROUP            refresh: true          - data-id: log-share-config.yml            group: SHARE_GROUP            refresh: true
server:  port: 8081 spring:  application:    name: management    version: 1.0.0  mvc:   static-path-pattern: /management/**  resources:    static-locations:     - file:../../web/management    - file:../../web/common

3、启动类

package com.guor; import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.context.config.annotation.RefreshScope; @EnableDiscoveryClient@SpringBootApplication(scanBasePackages = "com.guor")@MapperScan("com.guor.management.dao")@RefreshScopepublic class ManagementApplication {      public static void main(String[] args) {         SpringApplication.run(ManagementApplication.class, args);    } }

五、整合mybatis

1、user表设计

数据库选择的是最常用的MySQL

CREATE TABLE `user` (  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `username` varchar(100) NOT NULL,  `password` varchar(40) NOT NULL,  `age` int(11) DEFAULT NULL,  `sex` int(11) DEFAULT NULL,  `telephone` varchar(100) DEFAULT NULL,  `address` varchar(100) DEFAULT NULL,  `create_date` date DEFAULT NULL,  `update_date` date DEFAULT NULL,  `deleted` int(11) DEFAULT NULL,  `version` int(11) DEFAULT NULL,  PRIMARY KEY (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

2、UserController

package com.guor.management.controller; import com.guor.management.bean.User;import com.guor.management.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PutMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestControllerpublic class UserController {     @Autowired    private UserService userService;     @GetMapping("/getUserList")    public ListgetUserList(){         return userService.getUserList();    }     @PutMapping("/insertUser")    public void insertUser(@RequestBody User user){         userService.insertUser(user);    }}

3、UserService

package com.guor.management.service; import com.guor.management.bean.User; import java.util.List; public interface UserService {     ListgetUserList();    void insertUser(User user);}
package com.guor.management.service.impl; import com.guor.management.bean.User;import com.guor.management.dao.UserMapper;import com.guor.management.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List; @Servicepublic class UserServiceImpl implements UserService {     @Autowired    private UserMapper userMapper;     @Override    public ListgetUserList() {         return userMapper.getUserList();    }     @Override    public void insertUser(User user) {         userMapper.insertUser(user);    }}

4、UserMapper

package com.guor.management.dao; import com.guor.management.bean.User; import java.util.List; public interface UserMapper {     public ListgetUserList();     public void insertUser(User user);}
INSERT INTO gooreey.`user` (username, password) VALUES (#{ username}, #{ password});    

5、User

package com.guor.management.bean; import com.guor.base.bean.BaseBean;import lombok.Data; @Datapublic class User extends BaseBean {    private Integer userId;   private String username;   private String password;   private Integer age;   private Integer sex;   private String telephone;   private String address;}
package com.guor.base.bean; import lombok.Data; import java.util.Date; @Datapublic class BaseBean {     private Date createDate;    private Date updateDate;    private Integer deleted;    private Integer version;}

6、postman接口测试

更多精彩内容:

哪吒精华文章汇总

Java热门专栏

SpringBoot进阶实战

未经允许不得转载:分秒必争网 » 【云原生】一篇打通微服务架构,nacos + gateway + Redis + MySQL + docker