ubuntu

Ubuntu Java微服务架构怎样搭建

小樊
48
2025-07-09 11:09:36
栏目: 编程语言

在Ubuntu上搭建Java微服务架构涉及多个步骤,包括环境搭建、选择Java框架、创建微服务、服务发现和注册、配置管理等。以下是一个详细的指南:

环境搭建

  1. 安装Java
sudo apt update
sudo apt install openjdk-11-jdk

验证安装:

java -version
  1. 安装Maven(可选,用于构建项目):
sudo apt install maven

验证安装:

mvn -version
  1. 安装Docker(用于容器化部署):
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker

验证安装:

docker --version
  1. 安装Kubernetes(可选,用于容器编排):
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

选择Java框架

常用的Java框架包括Spring Boot和Spring Cloud,它们提供了服务发现、负载均衡、配置管理等功能。

创建微服务

  1. 使用Spring Boot创建微服务
  1. 示例:创建Eureka服务器
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

配置文件application.yml

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
client:
  register-with-eureka: false
  fetch-registry: false
  service-url:
    defaultZone: http://localhost:8761/eureka/
  1. 示例:创建服务提供者

添加依赖项:

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

配置文件application.properties

spring.application.name=my-service-provider
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

创建服务接口和实现:

@RestController
@RequestMapping("/api/v1/hello")
public class HelloController {
    @GetMapping
    public String sayHello() {
        return "Hello from my-service-provider!";
    }
}

服务发现和注册

使用Eureka进行服务发现和注册。

部署微服务

  1. 使用Docker部署

创建Dockerfile:

FROM openjdk:11-jdk-alpine
WORKDIR /app
COPY target/your-microservice.jar /app/your-microservice.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/your-microservice.jar"]

构建Docker镜像:

docker build -t yourusername/your-microservice:tag .

运行Docker容器:

docker run -d -p 8080:8080 yourusername/your-microservice:tag
  1. 使用Kubernetes部署(可选):

创建deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-service
  template:
    metadata:
      labels:
        app: my-service
    spec:
      containers:
      - name: my-service
        image: my-service:1.0
        ports:
        - containerPort: 8080

创建service.yaml

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-service
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

部署到Kubernetes集群:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

监控和运维

使用Spring Boot Actuator、Prometheus、Grafana等工具进行服务监控。

0
看了该问题的人还看了