270 likes | 282 Views
This presentation provides an overview of the JMS service renovation towards LS2, discussing the issues, technical study, roadmap for 2019, and conclusions. It also compares ActiveMQ and ActiveMQ Artemis as potential solutions.
E N D
JMS Service renovationtowards LS2 BE-CO TM, 13th December 2018 Konrad Kaczkowski Wojtek Sliwinski CMW team
Agenda • JMS Service overview & status • Why renovate now? What are the issues? • JMS technical study: scope & results • Roadmap for 2019 • Conclusions JMS Service renovation towards LS2
What is JMS? • JMS – Java Message Service (Sun Microsystems, 1998) • Loosely coupled, message oriented communication • API for sending messages between two or more Java clients • Main concepts: topics and queues • Does not specify the wire-level protocol (interoperability issue …) subscriber publisher subscriber producer consumer JMS Service renovation towards LS2
CTRL CTRL JMS in the Control System Presentation Layer ETHERNET NETWORK Python C++ Java OPERATOR CONSOLES FIXED DISPLAYS OPERATOR CONSOLES JMS Controls Middleware (RDA), RMI, JMS JMS Purpose: Reliable and scalabletransport of data between Java processes TCP/IP communication services FILE SERVERS APPLICATION SERVERS SCADA SERVERS Business Layer CERN GIGABIT ETHERNET TECHNICAL NETWORK C++ Java TCP/IP communication services TIMING GENERATION Controls Middleware (RDA) Communication RT Lynx/OS VME Front Ends WORLDFIP Front Ends T T T T PLC TCP/IP communication services Front-End Layer C++ C++ T WorldFIP SEGMENT T T OPTICAL FIBERS T PROFIBUS FIP/IO T BEAM POSITION MONITORS, BEAM LOSS MONITORS, BEAM INTERLOCKS, RF SYSTEMS, ETC… QUENCH PROTECTION AGENTS, POWER CONVERTERS FUNCTIONS GENERATORS, … ACTUATORS AND SENSORS CRYOGENICS, VACUUM, ETC… Hardware Layer JMS Service renovation towards LS2
JMS in the CMW System High Level Applications Experiments / Tech. Infra. Sequencer ATLAS CMS SIS LSA/InCA LHCb CMW Services & APIs PMA CESAR ALICE COMPASS … … OASIS REMUS High Level Applications JMS Gateway RBAC DIP RDA/JMS RDA Proxy Directory Service RDA Accelerator Equipment Instruments Interlocks Magnets DIP – Data Inter-change Protocol JMS – Java Message Service RBAC – Role-Based Access Control RDA – Remote Device Access Kickers Cavities … Collimators JMS Service renovation towards LS2
JMS Service in 2018 • Apache ActiveMQ 5.15.2 broker/client • Transport on OpenWire binary protocol • ActiveMQ specific, not portable • 2 HA clusters: 3 equal, load-balanced nodes • CO-PRO, CO-CERT • 6 master/slave clusters: 2 nodes, hot standby • BLM, DIAMON, LASER, SIS, TIM-* • 21 single brokers (per project) • CESAR, CMWLOG, InCA (x 10), Sequencer, OASIS JMS is a core, critical middleware service JMS is vital for accelerator operation • 2018 • Very stable JMS operation • No beam-dumps triggered by JMS issues (contrary to 2017) BE-CO JMS infrastructure (simplified view) JMS Service renovation towards LS2
Why renovate it now? Problems with ActiveMQ: • ActiveMQ client does not implement JMS API 2.0 • Blocker for upgrade to Spring 5 • ActiveMQ development has stagnated • ActiveMQ community is shrinking CO Study: Review of the JMS Service (CS-222) • What are our requirements? • Is ActiveMQ still the right messaging solution? • Are there other valid options? JMS Service renovation towards LS2
JMS technical study: scope & results JMS Service renovation towards LS2
Requirements • Spring 5 support • JMS 2.0 compatibility • Clustering support • Broker bridge feature • Sufficient performance • Java 11 compatibility • Using Open Source software JMS Service renovation towards LS2
What is known so far • ActiveMQ is currently deployed in production • ActiveMQ 5 is reliable • No JMS = No Beam • Renovation cannot decrease system quality • The client side has to be changed • Do we need to change the broker? JMS Service renovation towards LS2
Market survey on brokers JMS Service renovation towards LS2
Market survey on brokers https://softwaremill.com/mqperf/ JMS Service renovation towards LS2
And the winner is… JMS Service renovation towards LS2
ActiveMQ Artemis • Open source project • Potential successor of ActiveMQ 5 • AMQP, STOMP, MQTT, OpenWire, HornetQ • JMS 2.0 and 1.1 • Claims to have great performance • HA, clustering, bridges • Java 11 compatible JMS Service renovation towards LS2
ActiveMQ Artemis - Architecture JMS Service renovation towards LS2
Crash testing • 2 fast producers • Messages of 100 kB • Publishing every 100 ms • Publishing to 2000 topics • 2 slow consumers • Consuming every 10 sec • Running out of memory in short time JMS Service renovation towards LS2
ActiveMQ 5 vs Artemis - OpenWire ActiveMQ 5.15.8 JAPC using OpenWire protocol –current production Artemis 2.6.3 JAPC using OpenWire protocol JMS Service renovation towards LS2
Artemis: Issues JMS Service renovation towards LS2
Artemis: Issues & Follow up • The performance issue has been reported to Artemis developers (https://issues.apache.org/jira/browse/ARTEMIS-2193) • Followed-up within 24h • Fix prepared within 3 days • Issue partially solved JMS Service renovation towards LS2
ActiveMQ vs Artemis:jms-cmwlog-pro Heap usage CPU usage JMS Service renovation towards LS2
Alternative approach: ActiveMQ 5 + Qpid JMS Service renovation towards LS2
ActiveMQ 5:AMQP ActiveMQ AMQP protocol JMS Service renovation towards LS2
JMS study conclusions • Artemiscan offer good performance • …with trade-off on reliability • Apache Qpid JMS client is broker agnostic • Recommendation: • Stay with ActiveMQ 5 broker • IntroduceApache Qpid JMS client JMS Service renovation towards LS2
Roadmap for 2019 JMS Service renovation towards LS2
Plans for LS2 baseline (January’19) Upgrade ActiveMQ brokers to v. 5.15.8 • The latest stable release • Brings several stability fixes • Low risk New JAPC version with Qpid JMS client • JMS 2.0 compliant • AMQP instead of OpenWire • Genericclient to any AMQP broker Work-in-progress • Old & New JAPC clients compatibility • OpenWire & AMQP on ActiveMQ JAPC client JAPC client OpenWire OpenWire AMQP Broker JMS Service renovation towards LS2
Plans for Linac4 baseline (June’19) Validation of the new Artemis broker • Validate latest Artemis fixes • Perform even more stability tests • Validate broker clusters & bridges • Validate clients compatibility • Deploy several “guinea-pig” instances if (validation is successful) • Deploy Artemis brokers in production • No changes for client software Promote RDA3 instead of JMS (LS2) • For all device/property access (e.g. InCA) • Sync with UCAP evolution plans Old JAPC client New JAPC client OpenWire AMQP Broker JMS Service renovation towards LS2
Conclusions • JMS Service has to follow changes in the Java ecosystem • … and it has to be operational & stable all time • ActiveMQ broker is stable but it does not evolve • Artemis broker looks promising but it still lacks maturity • Stay with ActiveMQ for LS2 baseline • Use new JMS client (Qpid) and standard protocol (AMQP) • Continue validation of Artemis and conclude it by Linac4 baseline • Possibly, deploy new Artemis brokers for Linac4 baseline Thank you for your attention! JMS Service renovation towards LS2