前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 模拟Spring Cloud

python 模拟Spring Cloud

作者头像
py3study
发布2020-03-25 17:16:46
8230
发布2020-03-25 17:16:46
举报
文章被收录于专栏:python3python3

一,简介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

内部运行原理

Spring Cloud作为云应用集中了很多组件包括:路由代理(Zuul)、注册与发现(Eureka and Client)、断路器(Hystrix)、消费服务者(Ribbon  and Feign)等,每个组件在架构都为实现不同的处理功能。看如下结构图:

1.png
1.png

1、外部或者内部的非spring cloud项目都先通网关zuul然后从eureka server中获取可用列表服务。

2、从eureka server注册中心返回可用实例。

3、通过ribbon负载均衡分配可用节点。

4、ribbon选择可用的节点分配到后端具体的实例

5、hystrix断路器查看当前实例是否可用,dashboard监控实例状态信息,Turbine监控服务间的调用和熔断相关指标。

6、后端服务与服务之间都是通过feign通信,处理请求业务后返回到Eureka中心返回结果。

二、项目演示1.0

简介

Spring Cloud功能比较多,这里使用6个django项目,来模拟java spring cloud架构,采用单入口模式调用api

不涉及ribbon,hystrix,feign等功能,仅仅做演示而已,不是真正意义上的spring cloud。

项目说明

1.png
1.png

环境说明

操作系统

配置

ip

软件

centos 7.6

2核4g

192.168.31.229

pyton3.5.2,nginx1.16.1,docker 19.03.5

MySQL

由于本项目中,数据存储采用的是mysql,为了快速演示,直接使用docker启动mysql

代码语言:javascript
复制
docker run -d --restart=always --name example -e MYSQL_ROOT_PASSWORD=abcd@1234  -p 3306:3306 -v /data/mysql_3306/data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

初始化数据

代码语言:javascript
复制
# docker exec -it example /bin/bash
# mysql -u root -pabcd@1234
mysql> CREATE DATABASE usercenter DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(16) DEFAULT NULL COMMENT '用户名',
  `password` varchar(32) DEFAULT NULL COMMENT '密码',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `last_time` datetime DEFAULT NULL COMMENT '最后一次登录时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
mysql> INSERT INTO `usercenter`.`users` (`id`, `username`, `password`, `create_time`, `last_time`) VALUES ('1', 'xiao', '81dc9bdb52d04dc20036dbd8313ed055', '2020-02-05 11:55:27', '2020-02-05 11:55:30');
mysql> exit;
# exit

url转发

1.png
1.png

项目下载地址:

https://github.com/py3study/django-spring-cloud

运行项目

 eureka

代码语言:javascript
复制
cd django-spring-cloud/1.0/eureka
pip3 install -r requirements.txt
python3 manage.py runserver 0.0.0.0:8001

config

代码语言:javascript
复制
cd django-spring-cloud/1.0/config
pip3 install -r requirements.txt
python3 manage.py runserver 0.0.0.0:8002

auth

代码语言:javascript
复制
cd django-spring-cloud/1.0/auth
pip3 install -r requirements.txt
python3 manage.py runserver 0.0.0.0:8003

user

代码语言:javascript
复制
cd django-spring-cloud/1.0/user
pip3 install -r requirements.txt
python3 manage.py runserver 0.0.0.0:8004

gateway

代码语言:javascript
复制
cd django-spring-cloud/1.0/gateway
pip3 install -r requirements.txt
python3 manage.py runserver 0.0.0.0:8000

前端

代码语言:javascript
复制
cd django-spring-cloud/1.0/demo_login
pip3 install -r requirements.txt
python3 manage.py runserver 0.0.0.0:8080

配置nginx

将nginx_conf放入 /etc/nginx/conf.d目录,并启动nginx

代码语言:javascript
复制
yum install -y nginx
cp django-login-example/1.0/nginx_conf/* /etc/nginx/conf.d
# 启动nginx
nginx

配置域名解析

如果没有dns,请修改windows 10的hosts文件,添加2条记录

代码语言:javascript
复制
192.168.31.229 h5.baidu.com
192.168.31.229 api.baidu.com

访问页面

代码语言:javascript
复制
http://h5.baidu.com
1.png
1.png

登录信息

代码语言:javascript
复制
用户名:xiao
密码:1234

登录成功之后,效果如下:

1.png
1.png

 点击auth

1.png
1.png

查看api-docs

代码语言:javascript
复制
http://api.baidu.com:8003/api-docs/

如果谷歌浏览器安装了 JSON Formatter插件,效果就是下面的样子:

1.png
1.png

如果没有安装插件,就是一行展示

1.png
1.png

访问eureka注册中心

代码语言:javascript
复制
http://api.baidu.com:8001/

效果如下:

1.png
1.png

 确保状态都是UP,前端页面会每隔1秒,检测一次后端服务。不正常时,显示为DOWN

本文参考链接:

https://blog.csdn.net/qq_41701956/article/details/83829539 https://blog.csdn.net/looplook21/article/details/86615429

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,简介
    • 内部运行原理
    • 二、项目演示1.0
      • 简介
        • 项目说明
          • 环境说明
            • MySQL
              • 初始化数据
            • url转发
              • 运行项目
                •  eureka
                • config
                • auth
                • user
                • gateway
                • 前端
              • 配置nginx
                • 配置域名解析
                  • 访问页面
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档