TOP

基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成(一)
2017-10-10 12:42:17 】 浏览:10342
Tags:基于 容器 服务 PaaS 平台 设计 实现 持续 集成

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/

 

前言:关于什么是容器微服务PaaS和容器微服务PaaS的优劣,我找了下这篇不错可以参考 http://www.sohu.com/a/152360962_198222。本文致力于一步一步构建一个最简单的基于容器的微服务的PaaS云平台,先从简单的核心功能开始,慢慢深入全部主要功能和加入高可用和容错等非功能设计,争取做到麻雀虽小,五脏俱全。本连载的总体技术架构路线是微服务、PaaS平台和devops,这应该(至少目标)是一个完整的Paas云平台解决方案,最终目标是实现自动化、智能化开发测试部署和运维(例如通过AI实现运维智能化,故障自动处理、处理策略机器学习,无论运维设备规模如何增长,每个领域的运维只需要2-3个人)。微服务决定采用spring cloud,平台架构采用docker、kubernetes、zabbix、ansible、elk、openshift、SDS(没想好实现到什么程度,先列着吧),devops采用robot、jenkins等,很多内容我也没想好想明白,边写变做边补充边修改吧,回头补一张总体架构图更直观,不足和错误之处也请批评。                                                               

 

第一篇主要写一下最核心的cloud spring微服务实现、容器部署和jenkins持续集成,用最简单的例子把一个微服务架构设计实现,和微服务的自动化集成部署到容器流程跑通。

一、微服务

采用spring cloud实现微服务,包括eureka server(用于微服务注册发现心跳等) 、eureka client(用户实现微服务) 、feign(用于微服务的Load Balance)、zuul(服务网关,用户入口、过滤器),另外还有Kafka、配置中心、断路、服务容错、限流等等模块,由于不是最基础的,所以后文再说。

基础环境:window7 、jdk1.7 、IntelliJ IDEA 本机IP 192.168.1.109 (简单说明一下,我的实验环境就是一台4G内存的笔记本,安装的win7,然后在里面建了一个centos7的虚机IP为192.168.1.110,win7主要用户微服务IDEA环境的程序编写编译,centos主要用于devops和docker相关的运行)

 

1.1、创建eureka server (前面详细一点描述,后面的都简单说明)

EurekaApplication.java中加入如下代码,申明这是一个eureka server:

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

 

Pom.xml中加入:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

 

资源文件 application.properties中加入如下代码,申明eureka server信息,包括服务端口、主机名、有不自己不注册自己、服务URL:
server.port=8761
eureka.instance.hostname=localhost
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

 

OK,eureka服务端创建完毕,编译运行后,可以启动 http://192.168.1.109:8761 查看

可以看到这个时候,还没有instances,也就是还没有微服务注册。

 

1.2、创建eureka client 并完成注册(eureka client实现微服务,真实应用中里面放入程序逻辑和数据库访问并对外提供接口,注意服务需要是无状态)

前面和创建eureka差不多,建好之后在主程序中加入:

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestParam;
@SpringBootApplication
//重要:申明这是一个eureka client
@EnableEurekaClient
@RestController

public class DemoApplication {
//从配置文件中读取server.port,从URL中读取关键字MicroServiceA,返回前端this MicroServiceA port is 8762
@Value("${server.port}")
String port;
@RequestMapping("/MicroServiceA")
public String home() {
return "this MicroServiceA port is:" +port;
   }
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

 

配置文件: 申明server地址,微服务名称和端口
eureka.client.serviceUrl.defaultZone=http://192.168.1.109:8761/eureka/
spring.application.name=MicroService_A
server.port=8762

 

完成打开http://192.168.1.109:8762/Micr
基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成(一) https://www.cppentry.com/bencandy.php?fid=97&id=131343

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇jenkins~集群分发功能的具体实现 下一篇基于容器微服务的PaaS云平台设计..