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

2024-01-03 20:04

本文主要是介绍一个人能不能快速搭建一套微服务环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景

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

二、搭建过程

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.chinasem.cn/article/566890

相关文章

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同