Giter Site home page Giter Site logo

zhihuili / flower Goto Github PK

View Code? Open in Web Editor NEW
562.0 44.0 186.0 14.35 MB

反应式微服务框架Flower

Home Page: https://zhihuili.github.io/flower/#/

License: Apache License 2.0

Java 99.05% Shell 0.95%
akka flower java-8 reactive-programming microservice

flower's Introduction

反应式微服务框架Flower

Build Status codecov Percentage of issues still open license star this repo fork this repo

Flower是一个构建在Akka上的反应式微服务框架,开发者只需要针对每一个细粒度的业务功能开发一个Service服务,并将这些Service按照业务流程进行可视化编排,即可得到一个反应式系统。

  • 即时响应:服务流程的调用者可以得到即时响应,无需等待整个Service流程执行完毕;Service之间无调用阻塞,即时响应。
  • 回弹性:当Service失效、服务器失效,系统能够进行自修复,依然保持响应,不会出现系统崩溃。
  • 弹性:能够对调用负载压力做出响应,能够自动进行资源伸缩适应负载压力,能够根据系统负载能力控制请求的进入速度(回压)。
  • 消息驱动:Service之间通过消息驱动,完成服务流程,Service之间没有任何调用耦合,唯一的耦合就是消息,前一个Service的返回值,必须是后一个Service的输入参数,Flower框架负责将前一个Service的返回值封装成一个消息,发送给后一个Service。

Flower既是一个反应式编程框架,又是一个分布式微服务框架。

Flower框架使得开发者无需关注反应式编程细节,即可得到一个反应式系统。

快速上手

5分钟开发一个反应式应用,Flower反应式编程快速上手

文档

资料

参与开发

欢迎你参与到Flower的开发中,如何参与?

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:做了不兼容的 API 修改
  • 次版本号:做了向下兼容的功能性新增
  • 修订号:做了向下兼容的问题修正

License

Flower is released under the Apache License 2.0

flower's People

Contributors

dependabot[bot] avatar goal578 avatar lasting-yang avatar leeyazhou avatar lingxiezfy avatar lisj2022 avatar superkklot avatar yinanliang avatar zavakid avatar zhihuili avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flower's Issues

Flower并行处理性能测试

测试用例:
一个请求(请求参数:用户ID)返回三个数据库查询:用户信息,推荐商品ID列表,订单状态汇总信息。
三个数据库查询在Flower中通过消息分叉发送给三个服务并行执行。

性能对比(响应时间):和传统的串行阻塞数据库查询对比。

阻塞检测

特性需求是要解决什么问题?

flower运行过程中,可能会有业务阻塞线程,如果线程有阻塞,怎么可以检测到阻塞线程的阻塞点。

描述您期望的解决方案

flower运行过程中如果检测到阻塞点则通知用户。

web性能测试

使用Servlet3.0的异步特性,结合Flower的sync调用,构建一个标准web处理demo,进行性能测试。

对比性能:

  1. Servlet非异步
  2. Servlet异步,后续业务同步
  3. Spring WebFlux

Flower的分布式流程方案调研

几个Service构成一个流程segment,部署在一个服务器集群上,应用程序的流程可以接入这个segment作为自己流程的一段。主要是消息流转方案设计。
初步思路:在Flower center上管理应用整体流程,segment之间通过center返回的流程定义以及segment部署信息进行分布式消息通信。

DDD supported

特性需求是要解决什么问题?

领域驱动设计(Domain-Driven Design)功能支持开发

最少聚合消息服务节点 LeastJointService

JointService必须收到预设的全部个数消息后,将消息打包发送到后续服务。而LeastJointService在收到第一个消息后,立即将该消息发送到后续服务,后面到达的消息将被丢弃。

Service异常处理

目前Service异常发生时,异常会发送到SupervisorActor,目标是使用者可以开发ExceptionService,针对Service异常进行无侵入的处理。

Flower与Spring boot集成

利用Spring boot完成url路径dispatch,请求数据封装,并获得AsyncContext对象,将请求数据和AsyncContext对象交给Flower继续异步处理。

Flower事务机制

支持分布式的,统一的、声明式、补偿式的微服务事务

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.