首页 > 其他分享 >使用Spring Boot和Docker实现微服务的部署与扩展

使用Spring Boot和Docker实现微服务的部署与扩展

时间:2024-07-16 15:40:51浏览次数:9  
标签:服务 Spring Boot microservice 8080 Docker

使用Spring Boot和Docker实现微服务的部署与扩展

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代软件开发中,微服务架构被广泛采用,而Spring Boot和Docker是实现微服务架构的两大重要技术。本文将详细介绍如何使用Spring Boot和Docker实现微服务的部署与扩展。

一、Spring Boot微服务开发

Spring Boot简化了Spring应用的开发,它提供了各种开箱即用的功能。下面是一个简单的Spring Boot微服务示例。

1. 创建Spring Boot项目

首先,使用Spring Initializr生成一个基本的Spring Boot项目,并添加以下依赖:

  • Spring Web
  • Spring Boot DevTools

2. 编写控制器

创建一个简单的控制器来处理HTTP请求。

package cn.juwatech.microservice;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

3. 启动类

创建Spring Boot的启动类。

package cn.juwatech.microservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MicroserviceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MicroserviceApplication.class, args);
    }
}

二、Docker化Spring Boot应用

Docker是一种容器化技术,可以打包应用及其依赖,确保应用在任何环境中都能运行。以下是将Spring Boot应用Docker化的步骤。

1. 创建Dockerfile

在项目的根目录下创建一个Dockerfile。

# 使用官方的OpenJDK镜像
FROM openjdk:11-jre-slim

# 设置工作目录
WORKDIR /app

# 复制jar文件到容器中
COPY target/microservice-0.0.1-SNAPSHOT.jar app.jar

# 运行jar文件
ENTRYPOINT ["java", "-jar", "app.jar"]

2. 构建Docker镜像

使用以下命令构建Docker镜像。

docker build -t cn.juwatech/microservice:latest .

3. 运行Docker容器

使用以下命令运行Docker容器。

docker run -p 8080:8080 cn.juwatech/microservice:latest

三、使用Docker Compose编排多个微服务

Docker Compose是用于定义和运行多容器Docker应用的工具。可以使用Compose文件来配置应用的服务。以下是一个Docker Compose示例。

1. 创建docker-compose.yml

在项目根目录下创建一个docker-compose.yml文件。

version: '3'
services:
  microservice:
    image: cn.juwatech/microservice:latest
    ports:
      - "8080:8080"
  microservice2:
    image: cn.juwatech/microservice:latest
    ports:
      - "8081:8080"

2. 启动服务

使用以下命令启动服务。

docker-compose up

这将启动两个微服务实例,分别监听8080和8081端口。

四、微服务的扩展

在实际应用中,可能需要根据负载扩展微服务的实例数量。可以通过Docker Compose轻松实现这一点。

1. 扩展服务实例

修改docker-compose.yml文件,使用replicas指令来扩展服务实例数量。

version: '3'
services:
  microservice:
    image: cn.juwatech/microservice:latest
    ports:
      - "8080:8080"
    deploy:
      replicas: 3

2. 重新部署

使用以下命令重新部署服务。

docker-compose up --scale microservice=3

这将启动三个microservice实例,共同处理请求。

五、使用负载均衡

在微服务架构中,负载均衡是确保高可用性和性能的重要技术。可以使用Nginx作为反向代理和负载均衡器。

1. 创建Nginx配置文件

在项目根目录下创建nginx.conf文件。

events {
    worker_connections 1024;
}

http {
    upstream microservice {
        server microservice1:8080;
        server microservice2:8080;
        server microservice3:8080;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://microservice;
        }
    }
}

2. 更新docker-compose.yml文件

将Nginx添加到docker-compose.yml文件中。

version: '3'
services:
  microservice1:
    image: cn.juwatech/microservice:latest
  microservice2:
    image: cn.juwatech/microservice:latest
  microservice3:
    image: cn.juwatech/microservice:latest
  nginx:
    image: nginx:latest
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - "80:80"

3. 启动所有服务

使用以下命令启动所有服务。

docker-compose up

Nginx现在将作为负载均衡器,分发请求到三个microservice实例。

通过使用Spring Boot和Docker,可以快速构建、部署和扩展微服务架构。结合Docker Compose和Nginx,可以实现服务的编排和负载均衡,从而确保系统的高可用性和可扩展性。

本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

标签:服务,Spring,Boot,microservice,8080,Docker
From: https://www.cnblogs.com/szk123456/p/18305385

相关文章

  • Docker安装kafka
    Docker安装kafka安装之前,先创建一个网络,模式为桥接的方式dockernetworkcreatekafkaBridge--driverbridge只要能保证,zk和kafka能后相互访问就好了,方式随意。注意:使用同网络好于不同网络。虽然理论上Kafka和ZooKeeper可以跨广域网部署,但高延迟的网络连接可能会影响......
  • 加密办法 Ras 国密 Spring Security
    rsa的用法:后端生成秘钥对,吧私钥存redis,并且把key和公钥返回给前端前端加密之后吧密文和key传过来,后端通过key获取私钥解密Redis的配置:  1.配置pom.xml文件pom.xml <!--Redis依赖--><dependency><groupId>org.springframework.boot</grou......
  • Spring AI(绘图)
    接上篇:SpringAI(聊天程序)application.yml新增配置image模型版本、数量、高度等相关参数配置,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的#ai绘图设置image:options:#模型版本mode......
  • Docker---最详细的服务部署案例
    提供python服务的docker一键部署,示例已配置负载均衡,不需要的在nginx.conf和docker-compose注释相关代码即可文件结构1、dockerfile#服务的dockerfile#服务依赖的镜像FROMpython:3.7#设置容器内服务的工作目录WORKDIR/app#复制当前文件夹所有文件到容器的工作......
  • 基于Java+SpringBoot+Vue的创新创业教育中心项目申报管理系统的设计与开发(源码+lw+部
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • Spring框架
    Spring框架中都用到了哪些设计模式?工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;单例模式:Bean默认为单例模式。代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;模板方法:用来解决代码重复的问题。比如.RestTemplate,JmsTemplate,......
  • SpringMVC框架
    SpringMVC的主要组件?前端控制器DispatcherServlet(不需要程序员开发)作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet就减少了其它组件之间的耦合度。处理器映射器HandlerMapping(不需要程序员开发)作用:根据请求的URL来查找Handler处理器适配器HandlerAd......
  • 【2024】springboot校服订购系统设计与实现
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • SpringAOP中的切点表达式Pointcut详解
    https://www.jb51.net/program/293999439.htm 一、概述SpringAOP只支持SpringBean的方法切入,所以切点表达式只会匹配Bean类中的方法。二、切点表达式配置1.内置配置定义切面通知时,在 @Before 或 @AfterReturning 等通知注解中指定表达式。12345......
  • docker 版本prometheus
    缘由之前是jar安装到服务器,但是服务器重启后,没有自启动,而且很多都是docker维护,有平台方便重启,最后还是决定docker安装prometheus 安装dockerrun-itd--name=prometheus--restart=always-p9090:9090prom/prometheus容器创建成功后,即可通过浏览器访问h......