基于Java的微服务架构源码案例Abixen

微服务越来越受欢迎,每个月都有更多的库包和解决方案来支持微服务的开发测试,很多Java开发人员虽然听说过微服务,但是真正采用还是有犹豫的:“我知道,微服务是非常棒的,微服务器更容易维护和进一步开发,但我们没有建立一个良好的基于微服务架构的资源。”


许多尝试创建微服务应用程序(例如使用Netflix OSS堆栈)的开发人员都疑惑他们是否有足够的知识来配置整个系统。因为微服务架构所需知识与与单片monolithic 应用程序非常不同,需要额外的组件功能,如请求监视,用于在服务之间共享通信的队列,注册表服务,配置服务等等。同时为每个微服务保留一个单独的数据模型也是一个很好的做法。

在创建模块化Web应用程序时,开发人员必须专注于精心设计的业务领域设计。将模块之间的所有耦合最小化,这样至少避免了体系架构的复杂性。

Abixen Platform是一个完整的微服务架构系统,其源码可见Github地址:https://github.com/abixen/abixen-platform.

其体系组成部分如下:

1. Eureka:作为服务的注册器。

2. Hystrix仪表板:允许我们实时监控请求状态(例如,多少请求超时,多少次成功,多少次失败等)。

3. Zipkin:一种分布式跟踪系统,可帮助您收集应用程序中发生高延迟问题(性能慢)所需的数据。

4. Redis数据库:用于保存登录用户的信息。

5. RabbitMQ:用作在特定微服务器之间发送消息的队列。例如,核心微服务删除一个模块实例,需要让商业智能微服务或Web内容微服务删除与其相关的所有配置。

6. Abixen Platform Common:包含用函数式微服务实现的通用API的JAR。

7. Abixen平台配置:配置微服务。整个应用程序可以在YAML文件中进行逐个配置。

8. Abixen Platform Web Client:核心功能的静态内容,如页面和模块管理,安全管理等。

9. Abixen平台网关:起到安全网关的作用。每个请求都必须通过这个微服务。

10. Abixen平台核心:拥有自己的业务核心数据库,拥有平台的核心功能,如页面和模块管理,安全管理等。

11. Abixen平台商业智能服务:由于应用程序带来了函数性的微服务,因此我们将在这里放置一个用于商业智能报告,图表创建和进一步管理的模块。它也有自己的数据库。

12. Abixen平台Web内容服务:这与上述服务类似,但是这个函数可以提供内容创建功能,例如用户可以创建文章。它还有自己的数据库。

13. 您的服务:由开发人员使用该平台创建的定制微服务。

该架构基于Netflix OSS技术栈。函数性的微服务不需要在整个平台上都要部署,您如果不需要图表或文章管理器,您也可以部署这个平台并使用独立开发的微服务。

该架构也很好地映射到Amazon组件。使用诸如EC2,ALB,ECS,ECR,Route53,CloudWatch,Elasticache,ERD和SES之类的服务在AWS上部署应用程序。

工作原理:

1. 用户使用Web客户端生成请求。通过Zuul Proxy,请求被转发到网关微服务。

2. 网关微服务执行安全操作。如果用户未通过身份验证,则会引发“未经授权”的异常。如果经过身份验证,则Zuul Proxy会决定将请求发送到核心平台或指定的微服务,如商业智能,Web内容或由第三方开发人员创建的。

展开阅读全文

页面更新:2024-05-22

标签:仪表板   架构   队列   网关   应用程序   函数   源码   模块   核心   案例   功能   数据库   智能   商业   内容   用户   平台   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top