|
| 1 | +# interference |
| 2 | +simple distributed persistent layer for java applications |
| 3 | +(c) 2019 head systems, ltd |
| 4 | + |
| 5 | +current revision: 2019.3 |
| 6 | +for detailed information see docs/InterferenceManual.pdf |
| 7 | + |
| 8 | +https://github.com/interference-project/inteference |
| 9 | + |
| 10 | +Concepts & features |
| 11 | + |
| 12 | +- supports Base JPA annotations |
| 13 | +- supports distributed SQL queries |
| 14 | +- supports transactions |
| 15 | +- runs in the same JVM with local application |
| 16 | +- can be used as a local or distributed SQL database |
| 17 | +- can be used as persistent layer for a distributed application |
| 18 | +- operates with simple objects (POJOs), annotated primarily |
| 19 | + according to the JPA specification |
| 20 | +- allows you to make changes to data and query data from any node |
| 21 | + included in the cluster |
| 22 | +- does not contain any coordination nodes and does not require |
| 23 | + the launch of any additional coordinators. All cluster nodes are equivalent. |
| 24 | +- supports complex event processing and streaming SQL (in next release) |
| 25 | + |
| 26 | + |
| 27 | +Quick Start Application |
| 28 | + |
| 29 | +The interference-test application shows example of using the basic |
| 30 | +interference use cases. Before starting and using, read the manual. |
| 31 | + |
| 32 | +Consider a basic example when the interference service used as a |
| 33 | +local persistent layer of the application and runs in the same JVM |
| 34 | +with the application. |
| 35 | + |
| 36 | +To get started with interference, you need to include the interference.jar |
| 37 | +library in your project configuration. For maven pom.xml, this might look |
| 38 | +like this: |
| 39 | + |
| 40 | +<dependencies> |
| 41 | + <dependency> |
| 42 | + <groupId>su.interference</groupId> |
| 43 | + <artifactId>interference</artifactId> |
| 44 | + <version>2019.3</version> |
| 45 | + </dependency> |
| 46 | + ... |
| 47 | +</dependencies> |
| 48 | + |
| 49 | +Next, specify the necessary set of keys in the project |
| 50 | +(application) settings (jmxremote settings is optional): |
| 51 | + |
| 52 | +-Dsu.interference.config=interference.properties |
| 53 | +-Dcom.sun.management.jmxremote |
| 54 | +-Dcom.sun.management.jmxremote.port=8888 |
| 55 | +-Dcom.sun.management.jmxremote.local.only=false |
| 56 | +-Dcom.sun.management.jmxremote.authenticate=false |
| 57 | +-Dcom.sun.management.jmxremote.ssl=false |
| 58 | + |
| 59 | +To run a single local interference node, you can use the standard |
| 60 | +supplied interference.properties configuration. Note that file |
| 61 | +interference.properies should be within /config subdirectory. |
| 62 | +Next, see the configuration section. |
| 63 | + |
| 64 | +Then, add following code into initializing section of your java application: |
| 65 | + |
| 66 | +Instance instance = Instance.getInstance(); |
| 67 | +Session session = Session.getSession(); |
| 68 | +instance.startupInstance(session); |
| 69 | + |
| 70 | +where Instance is su.inteference.core.Instance |
| 71 | +and Session is su.interference.persistent.Session. |
| 72 | + |
| 73 | + |
| 74 | +Service as standalone |
| 75 | + |
| 76 | +This option can be used when the cluster node is used solely for the purpose of further horizontal scaling of the data retrieving mechanism: |
| 77 | + |
| 78 | +java -cp interference.jar |
| 79 | +-Dsu.interference.config=interference.properties |
| 80 | +-Dcom.sun.management.jmxremote |
| 81 | +-Dcom.sun.management.jmxremote.port=8888 |
| 82 | +-Dcom.sun.management.jmxremote.local.only=false |
| 83 | +-Dcom.sun.management.jmxremote.authenticate=false |
| 84 | +-Dcom.sun.management.jmxremote.ssl=false |
| 85 | +su.interference.standalone.Start |
| 86 | + |
0 commit comments