Distributed Computing with The BEA WebLogic Server Dean Jacobs

advertisement
Distributed Computing
with
The BEA WebLogic Server
Dean Jacobs
Architect
BEA Systems
Outline
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• WebLogic Server
• Clustered Services
• Clustering Infrastructure
• Web Services
Application Server Components
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Browsers
Web
Server
Servlet
Engine
Object
Server
Database
Java 2 Enterprise Edition (J2EE)
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
The Application Server platform for Java
• Java Servlets / Java Server Pages (JSP)
• Enterprise Java Beans (EJB)
– Stateless Session, Stateful Session, Entity
•
•
•
•
•
•
Java Messaging Service (JMS)
Remote Method Invocation (RMI)
Java Database Connection (JDBC)
Java Connector Architecture (JCA)
Java Naming & Directory Interface (JNDI)
Java Transaction API (JTA)
The BEA WebLogic Server
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• All Java, clean-room implementation of the J2EE
• Shipping basic APIs since 1996
• Most widely-used Application Server on the market
• Won every major industry award
• Associated BEA product: TUXEDO
–
–
–
–
Distributed TP Monitor
Originally developed at Bell Labs in 1984
Widely used for 24x7 OLTP applications
WLS and TUXEDO teams have been combined
WebLogic Clusters
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• A WebLogic cluster is a collection of servers that coordinate
their actions to provide scalable and highly-available services
• Scalable services
– Add or remove servers as needed
– Load balance requests
– Concentrate communication
• Highly-available services
– No single point of failure
– Failover requests
WebLogic Cluster Architecture
Load Balancing & Failover Points
#1
Browsers
#2
Web
Servers
#3
Servlet
Engines
(JSP)
#4
Object
Servers
(JMS/EJB)
Database
(JDBC)
Outline
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• WebLogic Server
• Clustered Services
• Clustering Infrastructure
• Web Services
Scalability Tradeoffs
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• WebLogic offers a variety of options that allow a trade-off between
scalability and availability/consistency
• These options are associated with services that maintain state in
memory between invocations
• For services where such state is not fundamentally persistent,
WebLogic offers in-memory primary/secondary replication to
improve availability (at the expense of some scalability)
• For services where such state is fundamentally persistent,
WebLogic offers “non-transactional” reads to improve scalability
(at the expense of some consistency)
Non-Transactional Reads
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Application Servers are often used for pre-fullfillment browsing,
which does not require transactional reads
– Classic example: airline reservations
– New-age example: on-line catalog shopping
• Essential to provide scalable, non-transactional reads; within one
transaction, allow data to
– be stale
– change, perhaps even move backward in time (after failover)
– come from different database snapshots
• Databases also do this; the real issue is whether the Application
Server further weakens database consistency guarantees
Types of Clustered Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
State in
memory
1 Stateless
No
2 Conversational
Yes
Persistent
Transactional
Reads
EJB/JMS/JDBC/JCA
factories, JSP SSS,
EJB Stateless/Entity
JSP SSS,
EJB Stateful
No
3 Cached
Yes
Some
No
4 Optimistic
Yes
Yes
Some
5 Migratable
Yes
APIs
Yes
Yes
JSP fragments,
EJB Entity
EJB Entity
JMS destinations,
JTA Tx Managers,
Admin Server
1 Stateless Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Server 1
Server 2
O1
O2
acme
acme
eng
eng
grompler
O1 O2
grompler
O1 O2
O1 O2
Client
2 Conversational Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#1
#2
A
B
B
AC
B
Browser
Web
Servers
C
Servlet
Engines
3 Cached Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Caches data obtained during an invocation so it can be read in
subsequent invocations by the same or other clients
• Multiple instances in the cluster
• Flush at regular intervals (TTL)
– Best when data is frequently updated
• Flush after an update completes
– Best when data is infrequently updated
– Implemented using multicast
– Manual flush API to allow notification of “backdoor” updates
3 Cached Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• EJB - “Read-only” entity beans
– Flush at regular intervals or when an update occurs
– Non-transactional reads
• JSP - Tags to cache computed page fragments in memory
– Flush at regular intervals
• In general, as the cache moves closer to the user
– the benefit of a cache hit increases, however
– it is harder to keep the data in sync
• The next step would be to cross the Internet (Akamai/Inktomi)
– Worthwhile only for data that will be hit many times per sync
– More natural to pre-load and refresh at regular intervals (data
warehouse) or after update (data replication)
Transactional Reads
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Authoritative copy of the state in a database
• The service maintains a copy in memory between invocations
• Reads by any client use the in-memory copy
• The challenge: Maintain consistency with the database given
updates that go through other instances or the “backdoor”
• Possible solutions
 Distributed concurrency control
 Centralized lock manager
 Use the database
 Partition so exactly one copy of each data item
4 Optimistic Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Use the database to implement optimistic concurrency control
for transactions with writes
– No protection for read-only transactions
• Upon commit, compare the before-and-after values of fields that
were read and throw a concurrency exception if they don’t match
– Can be done fairly efficiently using UPDATE-WHERE
– Does not require modification of the database schema
• To minimize the likelihood of such exceptions, flush after updates
occur (but not within the transaction)
• Does not ensure serializability in that, for example, an increment
and decrement of the same field will look like it was not modified
– This is a feature in that it allows safe but non-serializable transactions
5 Migratable Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Partition the data and assign each item to exactly one instance
• Concurrency control can then be local to the instance
• Must be restarted or migrated upon failure of the instance
– Assume data is persistent and service re-establishes state on its own
• Limitations on usage
–
–
–
–
Applications may lose co-location
May be hard to partition the data
Problematic to query across partitions
No backdoor updates
• JMS Destinations, JTA Tx Managers, Admin Server
Outline
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• WebLogic Server
• Clustered Services
• Clustering Infrastructure
• Web Services
Clusters and Domains
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Clusters
– The scope of load balancing and failover
– More tightly-coupled to facilitate this functionality: multicast is used to
• derive cluster membership
• advertise which services are available on which servers
• Domains
–
–
–
–
The scope of operations, administration, and management
Boundary of resource ownership
Boundary of non-interposed transactions
A domain may contain many clusters
Domains - Clusters - Tiers
Domain
Cluster
Cluster
Browsers
Web
Servers
Cluster
Servlet
Engines
Object Databases
Servers
Domain Startup
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Domain
Machine
Server
Server
Node
Manager
Admin
Server
SNMP
Monitoring
Browser
Configuration
Repository
Distribution of Configuration and
Deployment Information
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• The Admin Server uses a special data replication protocol
• Updates packaged as incremental deltas between versions
• Data can be persistently cached on local disks
– Speeds startup by reducing the amount of data to be transferred
– Allows startup/restart when the Admin Server is unreachable
• Seamlessly integrates two distribution methods
– One-phase Servers commit to new data as soon as it is received
– Two-phase Prepare and commit phases with the possibility of abort
• Ensures a temporarily unavailable server eventually receives all
committed updates
– Sends regular multicast heartbeats containing the current version number
Node Manager
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Starts up and shuts down its servers
• Monitors the health of its servers
– blocks on a socket receive
– periodically invokes areYouOK() servlet
– subsystems in server can register with this servlet
• Option to automatically restart failed or ailing servers
– Attempts to gracefully shutdown ailing servers using a lifecycle API
– Limited number of restart attempts to avoid thrashing
• Alternatively, a server can be managed by an HA framework
– Faster failover
– Works even if machine fails or failed process can’t be killed
Migratable Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• A migratable service can be deployed on a fixed server
– Availability by restart, manual migration, or HA framework
• A migratable service can be deployed to a named target associated
with a list of potential hosts
• All services deployed on a target are instantiated on the same host
• If the host fails, the services are automatically migrated together
• Sophisticated machinery to avoid split-brain syndrome
–
–
–
–
Action only if cluster contains a quorum
Paxos algorithm used to elect a leader that chooses hosts and renews leases
Chosen host must check lease before servicing each request
A new host cannot take over until the previous lease times out
Outline
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• WebLogic Server
• Clustered Services
• Clustering Infrastructure
• Web Services
Characteristics of Web Services
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Asynchronous
– Any participant can initiate communication with any other participant
– May send requests or responses
• Long-running
– Operations can take a long time to complete
– Essential to manage the context on each end during this time
• Loosely-coupled
– Industry-standard, low-functionality protocols enhance interoperability
– Self-describing payloads enhance compatibility
• Coarse-grained
– Remotely-invoked operations have significant size
– Document transfer an attractive model
Web Services Platform
Requirements
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• XML over HTTP/SMTP/... to support loosely-coupled, coarsegrained interactions
• Distributed system plumbing to support asynchronous, longrunning interactions with neutral programmatic clients
J2EE Application Servers are largely designed
for synchronous short-running interactions with
proprietary (programmatic) clients
WebLogic Server 
Web Services Platform
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Support for neutral clients
– XML over HTTP/SMTP/… of prime importance
– Support enhancements for functionality and performance (at the expense
of loose coupling and perhaps neutrality)
• Tie into the front end of JMS
–
–
–
–
–
Support for neutral clients
Neutral and long-running clients cannot use JMS Sessions
Reliability and ordering guarantees, if any, must be otherwise achieved
A session-less front end can be made more scalable and available
Message driven beans to invoke services and send responses
WebLogic Server 
Web Services Platform
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Tie into session management
–
–
–
–
–
Map external conversation IDs to internal session IDs
Simultaneous access by several operations in a cluster
Vanilla entity beans reliable but hit the disk every time
“Non-persistent” entity beans to trade reliability for performance
Place in cluster relative to incoming and outgoing JMS Destinations
• Long-running transactions
– Compensating transactions?
• Administration
– Monitoring, tracing, debugging across loosely-coupled systems
• Security
– Third-party authentication and user profile services
www.bea.com
Download