专业的编程技术博客社区

网站首页 > 博客文章 正文

容器微服务和持续集成,(一)Spring cloud搭建部署

baijin 2024-10-08 00:35:11 博客文章 4 ℃ 0 评论

从今天开始,我会以多个篇幅,详细介绍和整理容器微服务和持续集成,主要通过Spring Cloud微服务改造、容器化部署和Jenkins持续集成,完成基本的微服务架构实现。微服务采用Spring Cloud,平台架构采用Docker、Devops采用GitLab、Jenkins。争取写清楚,讲明白。希望能帮助到有需要的朋友们。

第一篇,就从Spring cloud开始。

一、简介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发得比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。

1.1、Spring组件架构

Spring Cloud 子项目包括:

Spring Cloud Config:配置管理开发工具包,可以让你配置放在远程服务器,目前支持本地存储,Git以及subversion。

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。

Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力

Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。

Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

1.2 SpringCloud特点

(1)约定优于配置

(2)开箱即用,快速启动

(3)适用于各种环境

(4)轻量级的组件

(5)组件支持丰富,功能齐全

二、SpringCloud搭建

2.1 Maven搭建

1、首先在网络上下载最近的maven文件,此处下载的为apache-maven-3.6.0。配置环境变量。制定M2_HOME参数值,指向maven的路径。

2、下载jdk8或者以上的版本,配置jdk8信息到myeclipse中,并配置maven的参数。

3、配置maven的路径,在myeclipse中,点击window-->Perferences-->

Myeclipse-->Maven4MyEclipse中的Installations,配置maven的路径。

4、然后修改User Settings 设置settings.xml的路径,本地仓库的默认地址为C:\User\用户\.m\repository,若本地机器不可联网,可以在外界下载文件之后,复制到本地仓库。

2.2创建注册中心

Spring Cloud 服务注册发现实现原理 如图

我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。

1、首先创建一个Spring-Boot 应用(本项目采用esclpilse+maven开发)
先创建一个Maven-Project root父类便于版本控制。

2、编写POM文件添加Spring-Cloud基本应用包

<!-- spring-cloud所有项目依赖包 -->

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>Dalston.SR1</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<finalName>spring-root</finalName>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<executions>

<execution>

<goals>

<goal>repackage</goal>

</goals>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<encoding>utf-8</encoding>

<source>1.8</source>

<target>1.8</target>

</configuration>

</plugin>

</plugins>

</build>

3、创建注册中心项目spring-demo-register 并且通过maven指定父类目录
创建一个maven-module

4、编写spring-demo-register 文件添加依赖包文件POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>com.demo</groupId>

<artifactId>spring-root</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>spring-demo-register</artifactId>

<!-- 添加注册中心依赖的包文件 -->

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka-server</artifactId>

</dependency>

</dependencies>

</project>

5、添加注册中心启动类以及配置Spring-Boot 配置.properties/.yml

Register.java

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication //spring-boot 启动注解

@EnableEurekaServer // spring-cloud 服务注解

public class Register{

public static void main(String [] args) {

new SpringApplicationBuilder(Register.class).web(true).run(args);

}

}

Application.yml

server:

port: 8761

eureka:

instance:

hostname: localhost

client:

registerWithEureka: false

fetchRegistry: false

serviceUrl:

defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

然后访问localhost:8761,如果出现注册页面, 就表示注册中心已经完成了

2.3 创建服务

1、创建一个maven module项目

2、配置spring-demo-A项目的pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>com.demo</groupId>

<artifactId>spring-root</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>spring-demo-A</artifactId>

<dependencies>

<!-- spring-cloud 客服端 start -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

<!-- spring-cloud 客服端 end -->

</dependencies>

</project>

3、添加注册启动类以及配置Spring-demo-A 配置.properties/.yml文件

PortalApplication.java

package com;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication

@EnableEurekaClient //Eureka Client

public class PortalApplication {

public static void main(String[] args) {

new SpringApplicationBuilder(PortalApplication.class).web(true).run(args);

}

}

Application.yml

server :

port : 8081 #tomcat端口号

eureka:

client:

serviceUrl:

defaultZone: http://localhost:8761/eureka/

spring :

application:

name: service-hi

2.4 测试服务注册

1、启动run-as->PortalApplication.java

2、再次访问:注册中心的访问地址 localhost:8761

以上就是Spring-Could基础的注册与发现功能。

OK,搞定!下一篇介绍容器。

本文由挨踢程序猿原创,欢迎关注,带你一起长知识!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表