UNPKG

pip-services3-components-node

Version:
47 lines 2.66 kB
/** * @module connect * * Todo: Rewrite this description * * @preferred * Contains implementation of connection parameters, using various connection strings, * which are stripped of all credentials. If we need to configure a service, the port, * ip address, protocol, and other parameters – we use the ConnectionParams object, and * relevant helper classes (like [[ConnectionResolver]]), for acquiring these parameters, * and for discovery of objects, components (which store and retrieve connection parameters). * * ### Discovery ### * * Service that store a registry of various end-points (what services are where, and how to * connect to them). It knows the end-points, but doesn't have the credentials to connect to them. * Separated for security reasons. * * [[https://pip-services3-node.github.io/pip-services3-components-node/interfaces/connect.idiscovery.html IDiscovery]] – interface for creating registries. * * [[MemoryDiscovery]] – registry that is stored in memory. * * There exist 2 types of discovery: * - Static discovery: all services have static IP addresses (like DNS, which also works using static * discovery) that are configured from the start and don't change along the way. As of lately, used * more often than dynamic, because it is simpler to use and more reliable. * - Proxy (or reverse proxy) is created with a dns name, and all the dynamics of * starting/restarting/switching from one host to another – everything is nice and clear * for the clients. Infrastructure does all the hard work out of the box. * - Configure sets the static registry. * * - Dynamic discovery: every time a service starts, it registers its address in the discovery * service ("Service name" at the following address "IP"). Clients then ask to resolve the address * by which the requested service can be reached. The service has a general name, by which other * services can resolve it. * - If a service stops working, you need to refresh its address, clean stale addresses, * heartbeats must be used – lots of problems and challenges. * * One service can have more than one address. */ export { ConnectionParams } from './ConnectionParams'; export { IDiscovery } from './IDiscovery'; export { ConnectionResolver } from './ConnectionResolver'; export { MemoryDiscovery } from './MemoryDiscovery'; export { CompositeConnectionResolver } from './CompositeConnectionResolver'; export { DefaultDiscoveryFactory } from './DefaultDiscoveryFactory'; export { ConnectionUtils } from './ConnectionUtils';