一个人能不能快速搭建一套微服务环境

一、背景

大型软件系统的开发现在往往需要多人的协助,特别是前后端分离的情况下下,分工越来越细,那么一个人是否也能快速搭建一套微服务系统呢? 答案是能的。看我是怎么操作的吧。

二、搭建过程

1、首先需要一套逆向代码生成工具,只需要设计好数据库表就能生成微服务,该源码已经上传到我的资源分享里面

1、修改dbConfig.xml文件配置数据源信息。
2、修改project.xml文件配置微服务信息。
    2.0、修改name为对应数据库,支持mysql、oracle、postgresql
    2.1、修改schema为据库名称
    2.2、修改table为表名,多个表以逗号分隔
    2.3、修改version版本号
    2.4、修改author为自己的OA名称
    2.5、修改service为服务名称
    2.6、修改module为模块名称
    2.7、修改rootPackage为根包名称
    2.8、修改application为启动类名称
    2.9、其他内容无需修改
3、运行Run.java,生成代码,路径为out目录下 。

2.相关的yml文件需要准备好

application.yml

#数据库配置信息
spring:datasource:url: ${member-plat.jdbc.member-sys.url}driver-class-name: ${member-plat.jdbc.member-sys.driver-class-name}username: ${member-plat.jdbc.member-sys.username}password: ${member-plat.jdbc.member-sys.password}#hikari数据源特性配置hikari:maximum-pool-size: 100 #最大连接数,默认值10.minimum-idle: 20 #最小空闲连接,默认值10.connection-timeout: 60000 #连接超时时间(毫秒),默认值30秒.#空闲连接超时时间,默认值600000(10分钟),只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放#如果大于等于 max-lifetime 且 max-lifetime>0,则会被重置为0.idle-timeout: 600000max-lifetime: 3000000 #连接最大存活时间,默认值30分钟.设置应该比mysql设置的超时时间短connection-test-query: select 1 #连接测试查询

bootstrap.yml

#应用ID
app:id: member-plat#应用端口
server:port: 8305#服务名称
spring:application:name:  cdj-projectservlet:multipart:max-file-size: 1024MB #指定上传文件允许的最大大小。 默认值为1MBmax-request-size: 10240MB #指定multipart/form-data请求允许的最大大小。 默认值为10MB。#配置注册中心
eureka:instance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}client:service-url:defaultZone: ${eureka.defaultZone} #服务注册到的地址fetch-registry: true#阿波罗配置信息
apollo:bootstrap:enabled: truenamespaces: application,txyunjdbc.yml,redis.yml,weixin.yml,oss.yml,member.yml,txrocketMq.ymlmeta: http://member-config:8080mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xml#开启驼峰命名法configuration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplmybatis-plus:configuration:# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:id-type: ASSIGN_UUID#日志级别配置信息
logging:level:root: INFOcn.member.dao: DEBUG

 3、注册中心准备好 eureka 源码已经上传的自研共享

4、apollo配置组件准备好,开源下载就行

5、准备一份部署文档,安装jdk 安装docker,安装nginx这些,编写好微服务启动脚本这些

三、部署文档

1.1服务器资源

操作系统版本:Linux CentOS 7.6

JAVA环境:openjdk version "1.8.0_312"

数据库:MYSQL8.0 或PostgreSQL 12.8

1.2 yum准备

1.2.1 更新yum

yum update yum

1.2.2 安装yum工具

yum -y install yum-utils

1.2.3查看yum版本 

yum –version

版本为3.4.3或之后的最新版本即可

1.3 JAVA部署

JAVA安装命令:

yum install java-1.8.0-openjdk.x86_64

查看JAVA版本: java -version

1.4 docker环境及部署

1.4.1版本

Client: Docker Engine – Community version: 20.10.12

Server: Docker Engine – Community version: 20.10.12

1.4.2 部署

1.用yum拉取阿里云镜像:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. yum安装:

yum install docker-ce

3.查看docker版本:

docker version

4.启动docker:

systemctl start docker

5.设置docker开机自启

systemctl enable docker

1.4.3 文件夹

1.在系统的/home路径下创建一个命名为“docker”的文件夹,用于存放docker相关文件。

2.在/home/docker路径下创建两个文件夹“script”和“apps”,用于存放脚本文件与镜像文件。

1.4.4 docker常用命令

1.查看docker镜像: docker images

2.查看docker正在运行容器: docker ps

3.查看docker里的容器: docker ps -a

1.5 nginx部署

端口需要:80

1.5.1 docker部署nginx

docker pull nginx:latest

1.5.2 脚本文件

在/home/docker/script路径下创建一个脚本文件“nginx.sh”,内容为:

docker run -d \

   --name nginx \

   --net=host \

   -v /home/docker/apps/nginx/www:/usr/share/nginx/html \

   -v /home/docker/apps/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \

   -v /home/docker/apps/nginx/logs:/var/log/nginx \

   -v /home/docker/apps/nginx/conf.d:/etc/nginx/conf.d \

   -v /home/docker/apps/nginx/cert:/etc/nginx/cert \

   nginx

(注意:以上内容需注意linux中的特殊字符,可用vim编辑文件,去掉特殊字符,否则运行脚本文件时会报错;cert为安全证书相关,不需要时可以去掉)

1.5.3 nginx文件

1.在/home/docker/apps路径下创建“nginx”文件夹

2.在/home/docker/apps/nginx路径下分别创建“www”、 “logs”、 “conf”、 “conf.d”四个文件夹;”www”文件夹用于存放前端代码,“logs”文件夹用于存放日志,“conf”文件夹用于存放nginx总配置文件,“conf.d”用于存放项目配置文件;如需安全证书相关,还要创建“cert”文件夹。

3.nginx总配置文件:

在/home/docker/apps/nginx/conf路径下创建“nginx.conf”文件,作为nginx的总配置文件,内容为:

user  nginx;

worker_processes  auto;

error_log  /var/log/nginx/error.log notice;

pid /var/run/nginx.pid;

events {

    worker_connections  1024;

}

http {

    include       /etc/nginx/mime.types;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    client_max_body_size 1024m;

    include /etc/nginx/conf.d/*.conf;

}

4.项目配置分文件

在/home/dokcer/apps/nginx/conf.d路径下创建“xxx.conf”文件,“xxx”为项目名,内容为:

#server

#{

  ## 80端口是http正常访问的接口

  #listen 80;

  #server_name XXX.com;

  ## 在这里,我做了https全加密处理,在访问http的时候自动跳转到https

  #rewrite ^(.*) https://${server_name}$1 permanent;

#}

server {

# listen 自定义监听端口

    listen       80;

#定义使用 访问域名

    server_name  localhost;

# 如需域名则配置如下

# 侦听443端口,这个是ssl访问端口

# listen 443 ssl;

# ssl_certificate /etc/nginx/cert/xxx.crt;

    # ssl_certificate_key /etc/nginx/cert/安全私钥文件名;

    location / {

        root   /var/nginx/html/xxx;

        index  index.html index.htm;

    }

    error_page   500 502 503 504  /50x.html;

    location = /404.html {

            root  error;

    }

}

1.5.4 运行nginx

1.通过脚本文件nginx.sh运行,脚本文件的运行需授予权限,在文件目录下命令:

chmod 755 nginx.sh

2.运行脚本命令:./nginx.sh

1.5.4 nginx常用命令

1.启动: docker start nginx

2.重启: docker restart nginx

3.停止: docker stop nginx

1.6 注册中心eureka部署(非必要)

端口需要:8761

1.6.1 准备

部署注册中心eureka,使用docker部署。在/home/docker/apps路径下创建“eureka”文件夹,并存放一个ctg-eureka.jar的镜像文件和构建镜像的Dockerfile文本文件。eureka.jar文件可使用别的服务器同目录下的ctg-eureka.jar文件。

Dockerfile文件的内容:

FROM java:8

VOLUME /tmp

ADD ctg-eureka.jar ctg-eureka.jar

EXPOSE 8761

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/ctg-eureka.jar"]

1.6.2 脚本文件

在/home/docker/script路径下创建一个脚本文件“eureka.sh”,内容为:

docker run --name ctg-eureka -d -p 8761:8761 ctg-eureka

1.6.3 运行eureka

1.通过脚本文件eureka.sh运行,脚本文件的运行需授予权限,在文件目录下命令:

chmod 755 eureka.sh

2.运行脚本命令:./ eureka.sh

1.6.4 eureka常用命令

1.启动: docker start ctg-eureka

2.重启: docker restart ctg-eureka

3.停止: docker stop ctg-eureka

1.7 配置中心Apollo部署(非必要)

端口需要: 8070,8080,8090

1.7.1 准备工作

Apllo的部署需要Mysql数据库,需要5.6.5以上版本。

1.7.2 创建数据库

Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

执行两个sql文件

sql/apolloportaldb.sql

sql/apolloconfigdb.sql

会创建两个数据库

sql文件可在官网:Quick Start · apolloconfig/apollo Wiki · GitHub 下载

1.7.3 脚本文件

1.在/home/docker/script路径下创建“apollo”文件夹

2.在/home/docker/script/apollo路径下创建“apollo-portal.sh”脚本文件,内容为:

docker run -d \

    --name apollo-portal \

    --net=host \

    -v /tmp/logs:/opt/logs \

    -e SPRING_DATASOURCE_URL=

"jdbc:mysql://数据库地址/ctg_apollo_portal_test?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=数据库账号\

    -e SPRING_DATASOURCE_PASSWORD=数据库密码\

    -e APOLLO_PORTAL_ENVS=test \

    -e TEST_META=http://服务器ip地址:8080 \

    apolloconfig/apollo-portal:1.9.1

3.在/home/docker/script/apollo路径下创建“apollo-config.sh”脚本文件,内容为:

docker run -d \

    --name apollo-configservice \

    --net=host \

    -v /tmp/logs:/opt/logs \

    -e SPRING_DATASOURCE_URL=

"jdbc:mysql://数据库地址/ctg_apollo_config_test?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=数据库账号\

    -e SPRING_DATASOURCE_PASSWORD=数据库密码\

    apolloconfig/apollo-configservice:1.9.1

4. 在/home/docker/script/apollo路径下创建“apollo-admin.sh”脚本文件,内容为:

docker run -d \

    --name apollo-adminservice \

    --net=host \

    -v /tmp/logs:/opt/logs \

    -e SPRING_DATASOURCE_URL=

"jdbc:mysql://数据库地址/ctg_apollo_config_test?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=数据库账号\

    -e SPRING_DATASOURCE_PASSWORD=数据库密码\

    apolloconfig/apollo-adminservice:1.9.1

1.7.4 docker拉取apollo

命令:

  1. docker pull apolloconfig/apollo-configservice:1.9.1
  2. docker pull apolloconfig/apollo-adminservice:1.9.1
  3. docker pull apolloconfig/apollo-portal:1.9.1

1.7.5 运行apollo

在/home/docker/script/apollo路径下运行指令

1. chmod 755 apollo-portal.sh

2. chmod 755 apollo-config.sh

3. chmod 755 apollo-admin.sh

执行运行命令

1. ./ apollo-portal.sh

2. ./ apollo-config.sh

3. ./ apollo-admin.sh

1.7.6 使用Apollo配置中心

访问服务器IP:8070可以进行访问,默认的用户名是apollo,密码是admin。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/602141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

github 好项目 之 reference

github项目地址 网页网址 点进去以后你可以看到很多关于技术前沿的东西的简单笔记,一些实践的代码,或者是一些快捷键的命令 我个人比较喜欢 latex 的数学公式笔记 以及关于 vim 的一些命令 还有我最喜欢的git命令

算法训练第六十天|84.柱状图中最大的矩形

84.柱状图中最大的矩形: 题目链接 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 : 输入:heights [2,1,5,6,2,3] 输出…

虾皮长尾词工具:如何使用关键词工具优化Shopee产品的长尾关键词

在Shopee(虾皮)平台上,卖家们都希望能够吸引更多的潜在买家,提高产品的曝光率和转化率。而要实现这一目标,了解和使用长尾关键词是非常重要的。本文将介绍长尾关键词的定义、重要性以及如何使用关键词工具来优化Shopee…

手势识别+人脸识别+姿态估计(关键点检测+教程+代码)

手势识别和手势关键点检测是计算机视觉领域中的一个重要研究方向,涉及到从图像或视频中检测人手的位置和姿态信息,并推断出手势的意义。以下是一些可能用到的方法和技术: 手势识别 基于深度学习的手势识别 基于深度学习的手势识别是目前最流行的方法之一。它通常使用卷积神…

二刷Laravel 教程(构建页面)总结Ⅰ

L01 Laravel 教程 - Web 开发实战入门 ( Laravel 9.x ) 一、功能 1.会话控制(登录、退出、记住我) 2.用户功能(注册、用户激活、密码重设、邮件发送、个人中心、用户列表、用户删除) 3.静态页面(首页、关于、帮助&am…

VMware 安装 macOS虚拟机(附工具包)

VMware 安装 macOS虚拟机,在Windows上体验苹果macOS系统! 安装教程:VMware 安装 macOS虚拟机VMware Workstation Pro 是一款强大的虚拟机软件,可让您在 Windows 电脑上运行 macOS 系统。只需简单几步操作,即可轻松安装…

【docker】数据卷和数据卷容器

目录 一、如何管理docker容器中的数据? 二、数据卷 1、数据卷原理 2、数据卷的作用 3、数据卷案例 三、数据卷容器 1、数据卷容器作用 2、数据卷容器案例 四、容器互连(centos镜像) 一、如何管理docker容器中的数据? 二、…

C语言scanf()函数详解

目录 1. scanf()函数简介 1.1 函数原型 1.2 头文件 1.3 返回值 1.4 参数 2.格式说明符 3.输入格式控制 关于‘ * ’的例子 关于width域宽的例子 关于length长度修饰符的说明 4. 其他常见问题说明 4.1 scanf()函数连…

Diffusion扩散模型学习2:DDPM前向加噪过程torch实现

参考: https://arxiv.org/pdf/2006.11239.pdf ##论文 https://github.com/dtransposed/code_videos/blob/main/01_Diffusion_Models_Tutorial/Diffusion%20Model.ipynb ##code https://spaces.ac.cn/archives/9119 1、红色框: 前向过程论文公式推出可以从x0原图一步到最终噪声…

移动神器RAX3000M路由器不刷固件变身家庭云之三:外网访问家庭云

本系列文章: 移动神器RAX3000M路由器变身家庭云之一:开通SSH,安装新软件包 移动神器RAX3000M路由器变身家庭云之二:安装vsftpd 移动神器RAX3000M路由器变身家庭云之三:外网访问家庭云 移动神器RAX3000M路由器变身家庭云…

jetson AGC orin 配置pytorch和cuda使用、yolov8 TensorRt测试

文章目录 1、安装环境1.1、检查系统环境1.2、下载安装pytorch1.3、下载安装torchvision1.3、测试安装是否成功 2、yolov8测试2.1、官方python脚本测试2.2、tensorrt 模型转换2.3、tensorrt c 测试 1、安装环境 1.1、检查系统环境 检查系统环境、安装jetpack版本,执…

Java8升级到Java11注意事项

Java8介绍 Java 8(又称为 JDK 1.8)是 Java 语言开发的一个主要版本,由 Oracle 公司于2014年3月发布。这个版本引入了大量新特性,包括对函数式编程的支持、新的 JavaScript 引擎、用于日期时间操作的新 API、新的 Steam API 等。 …

Python高级用法:装饰器用于参数检查

装饰器用于参数检查 检查函数接受或返回的参数,在特定上下文中执行时可能有用。XML-RPC协议是一种轻量级的远程过程调用(Remote Procedure Call)协议,通过HTTP使用XML对调用进行编码。自定义装饰器可以提供这种类型的签名&#x…

Linux操作系统基础(12):Linux的Shell解释器

1. Shell的介绍 在Linux中,Shell 是一种命令行解释器,它是用户与操作系统内核之间的接口,它负责解释用户输入的命令,并将其转换成系统调用或其他操作系统能够执行的指令。 Shell 提供了一种交互式的方式来与操作系统进行通信&am…

内核线程创建-kthread_create

文章参考Linux内核线程kernel thread详解 - 知乎 大概意思就是早期创建内核线程,是交由内核处理,由内核自己完成(感觉好像也不太对呢),创建一个内核线程比较麻烦,会导致内核阻塞。因此就诞生了工作队列以及…

Android Compose——ScrollableTabRow和LazyColumn同步滑动

Android Compose——ScrollableTabRow和LazyColumn同步滑动 效果数据实现TabList列表 如何同步实现?监听列表滑动变化计算列表子项索引位置Tab滑动 注 效果 Demo简述:此Demo所实现的效果为当滑动List列表时,所对应的Tab相对应进行滑动切换&a…

Linux 目录结构及其说明

Linux 操作系统遵循一种标准的目录结构,称为 Filesystem Hierarchy Standard(文件系统层次结构标准),其定义了不同目录的用途和内容。 浅蓝色文字 /(根目录): /根目录是整个文件系统的起点&…

第二百五十回

文章目录 1. 概念介绍2. 使用方法2.1 简单用法2.2 自定义用法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"三方包open_settings"相关的内容,本章回中将介绍另外一个三方包:bluetooth_enable_fork.闲话休提,让我们一起Talk Flu…

力扣2807.在链表中插入最大公约数

思路:遍历链表,对于每一个结点求出它与下一个结点的最大公约数并插入到俩个结点之间 代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}…