blob: 2e3212ae6e0fac72327f365cb1fe1184727d3d44 [file] [log] [blame]
APACHE TOMCAT JK3 CONNECTOR ROADMAP -*-text-*-
ApacheCon EU 2007 DISCUSSION POINTS:
* Lets make next generation connector and software load balancer
for application servers.
* Lets put JK 1.2 in maintenance mode
- Stop adding things to the JK 1.2 and only fix bugs
- We'll still need to vote how to maintain this
* It should be APR based and supported platforms should be
- Apache Httpd 2+
- Microsoft IIS 5+ (Windows 2000 and up)
- Generic API for standalone based programs
* Java code will be Java5 based
- Java5 is mandatory
- Both server and client reference implementation
will be developed
* Scripting support for the Load Balancer
- Load balancer will have some sort of scripting
to be able to make rule based load balancers
- We still have to decide if we need a full-blown
scripting support, or a simple rule engine will do
* Extended AJP 1.3 protocol
- Keep AJP 1.3 backward compatible
- CPING/CPONG will be mandatory when establishing
new connections.
- Add connection close notification.
Done by extending CPING/CPONG
- See how we can have 64K+ headers
Idea is to treat them as POST data if the
header doesn't fit inside header AJP packet
* Make JK3 protocol independent
- Although developed with protocol independence in mind
JK 1.2 is practically unusable for non AJP 1.3 protocols.
JK3 should allow custom protocols like http or fastcgi
* Add persistence to the dynamic configuration
- Have a way to merge the static configuration with
modified dynamic configuration via jkstatus
* More powerful log framework
- Using hierarchical logger names with corresponding
log levels to be able to debug or trace only
appropriate parts of the code
* Add management thread for each child
- APR_HAS_THREADS presence will be mandatory
- For each child process in web server a management thread
will be created that will monitor state and dynamic
configuration.
* COMET support
- Finding our ways how to drop idle connections between web
server and backend
- Maybe transporting the backend connector events back to the web
server
* Load Balancer methods
- Round-Robin
Standard basic requests count method
- Least Connections
Number of active sessions
- Response Time
Request/reply response time
- Transferred Data
Data read/transferred over the channel. Total or within
a measured interval.
- All methods have weighted distribution
- Methods can be combined with different weight for each method
e.g. 75% Response Time and 25% Transferred Data
- Load threshold
Make a load treshold for high load. When node reaches the desired
treshold (eg. 90%) update the load factors.
HOW TO REACH THE GOALS: ROADMAP.
Here are the steps to reach the goals.
1 - Branch at a tagged version of mod_jk.
2 - Put APR in the code (specially in place where there are #ifdef).
As first step support only httpd-2.0 and IIS.
3 - Test and port back the patches from the mod_jk branch.
Here we should have support for:
- Apache Httpd 2+
- Microsoft IIS 5+ (Windows 2000 and up)
- Generic API for standalone based programs
No changes in the JAVA part.
Decide if we want to support netscape too.
4 - Wait for a release cycle to see if the mod_jk branch could go to maintenance mode only.
5 - Branch again to separate configuration from the rest of the code.
6 - Test and port back the patches from the other branche.
Here we should have support for:
Persistence of the dynamic configuration.
A way to merge the static configuration with a dynamic one.
A dynamic configuration via an extented jkstatus
7 - Test and port back the patches from the old mod_jk branch.
8 - Write the JAVA part so that contexts and nodes could be added/remoted automaticly.
9 - Wait for a release cycle to see if the previous mod_jk branch could go to maintenance mode only.
n - Branch and process the protocol part of the proposal.
...