Giter Club home page Giter Club logo

proven-cluster's Introduction

proven-cluster's People

Contributors

bibiraju avatar ericstephan avatar telsethag avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

proven-cluster's Issues

Implement ClusterComponentRegistry

Create a cluster component registry that is shard by all member/module components. Each entry or update to a member/module registry should be forwarded to the cluster registry. This registry will be backed by proven's IMDG.

Refactor out ComponentType enumeration

Remove ComponentType enumenration and replace with Class value at construction time. This will facilitate extending ManagedComponents in new modules w/o havin to update an enumerated type.

Module activation

Provide implementation for ProvenModule activation. This includes async creation of ManagerComponents specified by ActiveManagers annotation and Producer methods for ManagerComponents created via injection.

Member Performance scaling

Member performance scaling is a maintenance operation performed by a ProvenModules.

Modules are responsible for identifying and creating/removing A selected module per member is selected and responsible for identifying and deploying/removing new modules to/from members. Note: ProvenModules should be annotated as Scalable to support this change.

Upgrade Jet

Upgrade Jet component to 3.2.2 from 3.0
The new Jet IMDG version is 3.12.6

Add recycling to scale operations

Scale requests should utilize components that can be re-used versus creation of a new component. For example, "Offline" components can be re-activated, if exists, instead of creating a new component. Current scale operation should be refactored to include recycling.

Create MO to transfer IMDG data for a failed component

Data is transferred to a selected component of same type:

  • Available components in same module given preference
  • Intra-member transfer for non-partitioned data
  • Any member for partitioned data

Only applies to components having distributed objects

MO to "prune" OOS components

Create a maintenance operation performed by modules to destroy components created by them that are out of service, can't be used to trigger a scale operation, and has no distributed objects that require transfer or recovery. This is a cleanup operation to save memory and decrease registry sizes. This will include adding a decorated destroy method to Creator interface.

Provide disclosure endpoint discovery for client connections

Server currently supports only a single disclosure endpoint, with a pre-defined name. This is sufficient for a single node, but needs to be changed to support a cluster environment that may include multiple disclosure endpoints with dynamic naming. A discovery mechanism will be built to allow discovery of endpoints and their current status.

Reorient myself to previous pipeline work

Here is the work I think still needs completing regarding the pipeline. I thought I had checked in work, but couldn't find it and ended up determining my changes that need to be incorporated in the latest develop branch.
Finalize message formats at the message travels through the streams on the platform
Finalize message path through the streams
Finalize how responses are reported and managed
Finalize on the message lifecycle (FIFO etc)
Finalize TSStream and TSPipeline
Migrate code Hybrid code to platform
Document how to test a pipeline outside Proven (based on Todd's example).

StreamManager should not return message stream proxy if not online

Message stream proxy creation and/or retrieval from StreamManager should not be allowed if underlying MessageStream component does not have a ManagedStatus of Online. Calls to StreamManager to retrieve a proxy will need to be refactored to account for this case.

Registry entries

Create registry entries for storage in component registries. Should include component location, distributed object identification, as well as properties specific to the entries managed component it represents. The properties provided support registry processing.

Registry Overdue Check

Add schedule timer method to check for overdue registry notifications in ModuleComponentRegistry. If overdue, mark as "Unknown", so component will not be a candidate for operation selection.

Check if component still exists (resolveObserverMethods for a Fail operation event message). If not exists then remove from registries. If exists, send fail operation event message to component if "Unknown" status is maintained for a specified number of overdue checks.

Module performance scaling

Implement scaling support at the ProvenModule level. New managed components are created to replace busy or failed components of the same type. Task schedule should be extended to support scale requests.

Identify and Implement v2.0 MO's

Identify and implement v2.0 MO's. For OnlineError severity errors or higher, send a registry notification to ComponentRegistry at point of occurrence, so the component's status may be updated as soon as possible and will no longer be considered as a candidate for selection.

PM scaling support

This feature would define the assignment of a variable number of ProvenModule(s) (PM) components to monitor a member for scaling (out/in) events. Scaling would attempt to recycle any suspended modules before deploying new.

SSE recovery from failed member

Current implementation does not allow for recovery of SSE sessions due a failed HZ member, potentially causing a client to not receive registered message events.

Create standard structure for Proven Measurement

The master branch converts JSON formatted files to Java classes, making the messages bulky. The purpose of this task is the leverage the design on the Proven Measurement / Proven Metrics classes while reducing the size of the message in more efficient forms.

Implement MemberComponentRegistry

Records status and component information for a member's components.
Forwards it's module information to cluster registry.
Maintains current list of external facing disclosure endpoints, use by clients to identify disclosure locations.

Jet pipeline monitoring support

Add initial support for Jet pipeline monitoring. This should include simple recovery (i.e. RESUME) if pipelines are stalled. Monitoring solution should be integrated in both hybrid and disclosure modules to support the disclosure processing pipeline.

Recovery scaling for lost member

Components failing because of a lost member AND managing distributed object(s) must be recovered on another member. These components should be annotated with Scalable annotation. If non-partitioned recovery, new component should be on same member as new data member (i.e. previously the backup member). If data is partitioned then any member may be selected.

Recovery scaling is always done even if capacity is violated at time of scale event.

Recovery scaling is a maintenance operation performed by managers. Each manager type is responsible for identifying and recovering component types created under them.

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.