FlyCloud

Project Url: geduo83/FlyCloud
Introduction: 🔥🔥🔥FlyClould 微服务实战项目框架,在该框架中,包括了用 Spring Cloud 构建微服务的一系列基本组件和框架,对于后台服务框架的搭建有很大的参考价值,大家可以参考甚至稍加修改可以直接应用于自己的实际的项目开发中,该项目没有采用 Maven 进行项目构建,Maven 通过 xml 进行依赖管理,导致整个配置文件太过臃肿,另外灵活性也不是很强,所以我采用 Gradle 进行项目构建和依赖管理,在 FlyTour 项目中我们见证了 Gradle 的强大,通过简单的一些配置就可以轻松的实现组件化的功能。该项目共有 11 个 Module 工程。其中 10 个位微服务工程,这 10 个微服务工程构成了一个完整的微服务系统,微服务系统包含了 8 个基础服务,提供了一整套微服务治理功能,他们分别是配置中心 module_config、注册中心 module_eureka、认证授权中心 module_uaa、Turbine 聚合监控服务 module_monitor、链路追踪服务 module_zipken、聚合监控服务 module_admin、路由网关服务 module_gateway、日志服务 module_log。另外还包含了两个资源服务:用户服务 module_user 和 blog 服务 module_blog,另外还有一个 common 的 Module,为资源服务提供一些一本的工具类
More: Author   ReportBugs   
Tags:

在这里插入图片描述

FlyClould 微服务实战项目框架,在该框架中,包括了用 Spring Cloud 构建微服务的一系列基本组件和框架,对于后台服务框架的搭建有很大的参考价值,大家可以参考甚至稍加修改可以直接应用于自己的实际的项目开发中 csdn 地址:https://blog.csdn.net/geduo_83/article/details/87866018 欢迎点赞加星,评论打 call、加群:810970432

在该框架中包括了用 Spring Cloud 构建微服务的一系列基本组件和框架,对于后台服务框架的搭建有很大的参考价值,大家可以参考甚至稍加修改可以直接应用于自己的实际的项目开发中。

更新日志:

FlyCloud 2.0.0 2019-06-08
  • 业务组件 module_news 添加
FlyCloud 1.0.0 2019-02-28

初始版本:

  • 1.配置组件:注册中心、配置中心、授权中心
  • 2.监控组件:聚合监控、熔断监控、路由监控
  • 3.其他组件:网关服务、日志服务、公共服务
  • 4.业务组件:用户组件,博客组件

开发环境:

在该框架中,包括了用 Spring Cloud 构建微服务的一系列基本组件和框架,运行所需要软件如下:

  • 开发 IDE:IDEA https://www.jetbrains.com/idea/download/#section=windows
  • 数据库:mysql5.7 https://dev.mysql.com/downloads/mysql/
  • 组件通信 rabbitmq http://www.rabbitmq.com/download.html
  • Erlang 环境 http://www.erlang.org/downloads Erlang 环境 http://www.cnerlang.com/resource/182.html 该项目没有采用 Maven 进行项目构建,Maven 通过 xml 进行依赖管理,导致整个配置文件太过臃肿,另外灵活性也不是很强,所以我采用 Gradle 进行项目构建和依赖管理,在 FlyTour 项目中我们见证了 Gradle 的强大,通过简单的一些配置就可以轻松的实现组件化的功能。该项目共有 11 个 Moudle 工程。其中 10 个位微服务工程,这 10 个微服务工程构成了一个完整的微服务系统,微服务系统包含了 8 个基础服务,提供了一整套微服务治理功能,他们分别是配置中心 module_config、注册中心 module_eureka、认证授权中心 module_uaa、Turbine 聚合监控服务 module_monitor、链路追踪服务 module_zipken、聚合监控服务 module_admin、路由网关服务 module_gateway、日志服务 module_log。另外还包含了两个资源服务:用户服务 module_user 和 blog 服务 module_blog,另外还有一个 common 的 Moudle,为资源服务提供一些一本的工具类。

    工程架构图:



    下面对 11 个 Moudle 工程分别进行介绍:
  • 1.注册中心:module_eureka 在这个系统中,所有的服务都向注册中心 module_eureka 进行服务注册。能方便的查看每个服务的服务状况、服务是否可用,以及每个服务都有哪些服务实例 工作流程:
  • 2.配置中心:module_config 配置中心所有服务的配置文件由 config-server 管理,特别说明为了简单起见本框架中配置数据都放在本地并没有从 git 仓库远程获取 架构图:
  • 3.网关服务:module_gateway 网关服务使用的是 Zuul 组件, Zuul 组件可以实现智能路由、负载均衡的功能 gateway-service 作为 个边界服务,对外统一暴露 API 接口,其他的服务 API 接口只提供给内部服务调用,不提供给外界直接调用,这就很方便实现统鉴权、安全验证的功能 通过路由网关实现负载均衡:
  • 4.链路追踪服务:module_zipkin 它可以查看每个请求在微服务系统中的链路关系
  • 5.聚合监控服务:module_admin 提供了非常强大的服务监控功能,可以查看每个向注册中心注册服务的健康状态, 日志、注册时间等
  • 6.Turbine 聚合监控服务:module_monitor 它聚合了 module_user 和 module_blog 的 Hystrix Dashboard ,可以查看这两个服务熔断器的监控状况
  • 7.认证授权服务:module_uaa Spring Cloud 0Auth2 由这个服务统一授权并返回 Token。其他的应用服务例如 module_user 和 module_blog 作为资源服务 API 接口资源受保护的,需要验证 Token 并鉴后才能访问,我采用的 0Auth2+JWT 安全认证,需要生成私钥用于加密,公钥用于解密 生成私钥命令:
    keytool -genkeypair -alias fly-jwt -validity 36500 -keyalg RSA -dname "CN=jwt,OU=jwt,O=jwt,L=haidian,S=beijing,C=CH" -keypass fly123 -keystore fly-jwt.jks -storepass fly123
    
    生成公钥命令:
    keytool -list -rfc --keystore fly-jwt.jks | openssl x509 -inform pem -pubkey
    
    JWT 认证流程:
  • 8.用户服务:module_user 作为资源服务,对外暴露用户的 API 接口资源
  • 9.blog 服务:module_blog 作为资源服务,对外暴露 blog 的 API 接口资源
  • 10.日志服务:module_log 作为日志服务, module_user 和 module_blog 服务通过 RabbitMQ 向 module_log 发送业务操作日志的消息,最后统一保存在数据库,由它统一持久化操作日志 日志服务架构图:

    功能演示:

    依次启动 module_eureka, module_config,module_zipkin 及其他的微服务,等整个微服务系统完全启动之后,在览器上访问 即:http://localhost:8761,即就是 Eureka 可以查看服务注册的情况 API 接口文档采用 Swagger2 框架生成在线文档, module_user 工程和 module_blog 工程集成了 Swagger2 ,集成 Swagger2 只需要引入依赖,并做相关的配置,然后在具体的 Controller 上写注解,就可以实现 Swagger2 的在线文档功能在浏览器输入http://localhost:8762/swagger-ui.html 查看 user 服务的 api 文档 在浏览器输入http://localhost:8763/swagger-ui.html 查看 blog 服务的 api 文档 在浏览器上访问 http://localhost :9998 展示了 admin-service 登录界面,admin-service 作为 个综合监控的服务,需要对访问者进行身份认证才能访问它的主页,登录用户名为 dmin 密码为 123456 这是登录成功后进入的首页面: 点击 TURBINE,这是 user 服务和 blog 服务的熔断器监控页面 在浏览器上访问 http://localhost :9411 查看服务之间相互调用的链路追踪 好了,截止到现在整个项目就全部介绍完了,本项目可以直接拿来应用,进行项目开发,本框架代码量较大,所以我就不贴源代码了

    问题反馈

    在使用中有任何问题,请在下方留言,或加入 Android、Java 开发技术交流群 QQ 群:810970432 email:geduo_83@163.com

    关于作者

    var geduo_83 = {
      nickName  : "门心叼龙",
      site : "http://www.weibo.com/geduo83"
    }
    

    License

    ``` Copyright (C) menxindiaolong, FlyCloud Framework Open Source Project

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ```

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea