|
Table of Contents
1. Introduction
1.1 Project/Component Working Name
1.2 Name(s) and e-mail address of Document
Author(s)/Supplier
1.3. Date of This Document
2. Project Summary
2.1 Project Description
2.2 Risks and Assumptions
3. Problem Summary
3.1 Problem Area
3.2 Justification
4. Technical Description
4.1 Details
4.2 Bugs/RFE's
4.3 Scope
4.4 Out-of-scope
4.5 Interfaces
4.6 Documentation Impact
4.7 Configuration/administration Impact
4.8 High Availability Impact
4.9 Internationalization
4.10 Packaging
4.11 Security Impact
4.12 Compatibility
4.12 Dependencies
5. References
6. Schedule
1. Introduction
1.1. Project/Component Working Name
In-Memory Replication for Session Persistence
1.2. Name(s) and e-mail address of
Document
Author(s)/Supplier
Larry White
larry.white@sun.com
1.3. Date of This Document
08/06/2006
2. Project Summary
2.1. Project Description
In-Memory Replication for Session Replication (HTTP / SFSB)
2.2. Risks and Assumptions
// Note any risks, and assumptions that must be considered
along
// with the proposal. Include technical risks.
3. Problem Summary
3.1. Problem Area
// What problem or need does this project solve?
As we move Application Server 9.1EE to Glassfish, we will not
have HADB as a backing store available in Glassfish as
open-source.
For this and other reasons we require a light-weight, low-cost solution
for HTTP Session persistence and Stateful (EJB) Session Bean
persistence. For Application Server 9.1EE, HADB will still be
available
through JES and will continue to provide an HA solution for customers
requiring a persistence solution that provides "5 Nines" availability.
3.2. Justification
Glassfish clustering requires this solution for
high-availability and
failover for the web tier and EJB tier.
4. Technical Description
4.1. Details
The general approach is to replicate session state from each
instance in a cluster to a back-up. Clustered instances will
replicate in a ring topology. Each backup instance will store
the replicated data in-memory.
No changes will be required for web-tier or iiop load
balancers.
Upon a failure the instance now servicing the request (after
failover) will either already have the necessary data or it will
use a broadcast mechanism to obtain and take ownership of
the data.
The plan is to have as close to zero configuration as possible.
Availability configuration will continue to work as it has for
previous HA enabled releases. There will be a new persistence-type
("replicated"). With this small change, QA and performance tests
should run as they do with HADB.
The technology for inter-process messaging is still under
investigation.
The current plan is to leverage GMS for cluster group
membership
services including things like initial bootstrapping/startup and
various
cluster shape changes including instances being stopped and re-started,
instances failing, new instances being added to the cluster, etc.
4.2. Bug/RFE Number(s)
// List any Bug(s)/RFE(s) which will be addressed by this
proposed
change.
// Provide links to the Issue tracker Bug(s)/RFE(s)where possible
4.3. In Scope
For internal use only, this project will provide an SPI for alternative
experimental implementations of memory replication for session state.
4.4. Out of Scope
It is not the aim of this project to provide a generic memory
replication
mechanism.
4.5. Interfaces
// Interfaces are a major part of Architectural review.
// Commands, Files, Directory Layout, Ports, DTD/Schema, admin tools,
// config files, APIs, CLIs, and almost anything that is externally
// observable is an interface. In 1-Pager it is necessary to document
// any interface that can be used by external projects and products.
// Documented public interfaces must be assigned a stability level.
// Some commonly used Stability levels in prior projects are:
//
// Stable : Widely used public interface. changed very rarely.
//
// Standard : Defined by a standards body (e.g: JDBCv3). Rare but
// incompatible clarifications and changes could occur
// in a standard. Product will specify version of std
// supported. J2SE, J2EE and WS* are classified
// as Standard.
//
// Evolving : Subject to carefully controlled but possibly
// incompatible change at a major or minor release.
// When a change is made all efforts will be made
// to address incompatiblity and migration. All
// incompatibilities will need to be reviewed
// and approved by as-ccc@sun.com.
//
// Unstable : Early access, subject to unrestricted degree of
// change. A few App Server interfaces are classified
// as Unstable. Docs must call out exported unstable
// interfaces. Be wary of importing Unstable interfaces.
//
// External : Defined external to GlassFish Application Server,
// but not by a Standards body. Suitable for describing
// other freeware, open source interfaces.
//
// http://www.opensolaris.org/os/community/arc/policies/interface-taxonomy/
// describes the permitted interface taxonomy.
4.5.1 Exported Interfaces
// Disclose all interfaces that this project exports.
| Interface |
Stability |
Former Stability (if changing) |
Comments |
entities persistence-type
&
sfsb-persistence-type
for domain.xml
|
stable
|
|
used in: domain.xml
need to add 'replicated' as new valid value to both entities
|
entity persistence-type
for sun-web.xml
(no change needed)
|
stable
|
|
persistence-type
'replicated' has already been added here (by the web server team) we
will use that same value.
|
|
|
|
|
4.5.2 Imported interfaces
// Disclose interfaces this project imports.
| Interface |
Stability |
Exporting Project: Name, Specification or
other Link. |
Comments |
GMS
group membership & health checking
|
TBD |
GMS |
Details still to be completed in
conjunction with Shreedhar.
|
|
|
|
|
4.5.3 Other interfaces (Optional)
// Any private interfaces that may be of interest?
| Interface |
Stability |
Exporting Project: Name, Specification or
other Link. |
Comments |
SPI for session memory-replication
(experimental) |
unstable |
Memory Replication for Session
|
This is intended for internal experimental
use only at this time.
Intention is not to
make multiple implementations available. |
4.6. Doc Impact
// List any Documentation (man pages, manuals, service
guides...)
// that will be impacted by this proposal.
4.7. Admin/Config Impact
// How will this change impact the administration of the
product?
// Identify changes to GUIs, CLI, agents, plugins...
4.8. HA Impact
// What new requirements does this proposal place on the High
// Availability or Clustering aspects of the component?
There are no new requirements.
4.9. I18N/L10N Impactinks
// Does this proposal impact internationalization or
// localization?
No
4.10. Packaging & Delivery
// What packages, clusters or metaclusters does this proposal
// impact? What is its impact on install/upgrade?
See the packaging and delivery requirements for GMS.
There should be no additional requirments beyond those
already defined there.
4.11. Security Impact
// How does this proposal interact with security-related APIs
// or interfaces? Does it rely on any Java policy or platform
// user/permissions implication? If the feature exposes any
// new ports, Or any similar communication points which may
// have security implications, note these here.
4.12. Compatibility Impact
None anticipated.
4.13. Dependencies
// List all dependencies that this proposal has on other
// proposals, components or products. Include interface
// specifics above in the interfaces section;
// LIST dependency component version requirements here.
Technology for inter-process messaging (to be announced)
GMS (see above)
5. Reference Documents
// List of related documents, if any (BugID's, RFP's,
papers,
Blogs).
// Explain how/where to obtain the documents, and what each
// contains, not just their titles.
GMS One Pager - explains the functionality of Group Membership Service
and its usage of JXTA.
6. Schedule
6.1. Projected Availability
// Dates in appropriate precision (quarters, years)
|