Skip to main content

Lynx Plugin Ecosystem

This page is a map, not a plugin config reference. Use it to decide which plugin page to read next and to understand where one plugin's responsibility ends and another system or dependency begins.

How To Read A Plugin Page

For any Lynx plugin, the four facts that matter most are still:

  1. the Go module path
  2. the configuration prefix
  3. the runtime plugin name
  4. the public API you use after startup

That set tells you how the plugin is loaded, how it is looked up at runtime, and whether it is a good match for your integration point. This ecosystem page itself has no standalone YAML because it is not a runtime plugin.

GoalStart hereWhat you are really choosing
Expose service trafficHTTP, gRPC, TLS, SwaggerServer entrypoints, ports, middleware/interceptor surfaces
Use data stores and locksDatabase Plugin, SQL SDK, MongoDB, Redis, Redis Lock, Etcd LockShared clients, lock semantics, and storage-specific APIs
Consume config centers or governance control planesApollo, Nacos, Etcd, PolarisExternal control planes, not business-facing APIs
Add transaction or identity infrastructureSeata, DTM, Eon IDExternal coordinators, ID layout, and operational ownership boundaries
Add traffic protection and observability hooksSentinel, TracerResource naming, protection policy, and observability surfaces
Add asynchronous brokersKafka, RabbitMQ, RocketMQ, PulsarBroker clients, delivery semantics, and topic ownership
Understand templates and lifecycleLayout, Plugin Usage Guide, Plugin ManagementWhat the scaffold imports, what runtime owns, and how plugins are ordered

Dependency Boundaries That Matter Most

PageWhat it depends onWhat it does not ownRead together with
SeataAn external Seata coordinator plus the referenced Seata client YAMLTransaction boundary placement inside your business codeDTM
DTMAn external DTM server and, optionally, gRPC/TLS assetsBranch business endpoints and orchestration semanticsSeata
SentinelStable resource names from HTTP, gRPC, or business wrappersDynamic config-center rule loading or automatic resource designHTTP, gRPC
Eon IDOptional shared Redis when worker auto-registration is enabledRedis provisioning and uniqueness guarantees after you disable auto-registrationRedis
Redis LockA working Redis plugin and clear lock ownership rulesRedis deployment, connection bootstrap, or business retry policyRedis
Apollo, Nacos, EtcdExternal config / service-discovery control planesApplication-local validation of every consumed keyBootstrap Configuration

One Repo Is Not Always One Page

  • lynx-mysql, lynx-pgsql, and lynx-mssql are concrete SQL plugins that are easier to compare through Database Plugin plus SQL SDK.
  • lynx-layout is a service template, not a runtime plugin, so it belongs with Layout.
  • lynx-redis-lock is a capability layer on top of Redis and should be read together with Redis Lock and Redis.
  • lynx-eon-id used to live mostly as a side mention in the ecosystem page, but it now deserves its own page because its Redis dependency, fail-closed behavior, and bit-allocation limits are specific enough to document separately.

Common Consumption Patterns

Across the codebase, plugin access usually looks like one of these patterns:

  • runtime-owned server getter: http.GetHttpServer(), grpc.GetGrpcServer(nil)
  • client getter: mongodb.GetMongoDB(), elasticsearch.GetElasticsearch()
  • package-level runtime helper: eonid.GenerateID(), eonid.ParseID(id)
  • plugin-manager lookup: lynx.Lynx().GetPluginManager().GetPlugin("dtm.server")
  • plugin object API: apolloPlugin.GetConfigValue(...), etcdPlugin.GetClient()

When reading docs, prefer examples that match one of these real lookup patterns. That is usually the fastest way to distinguish a runtime-owned server plugin from a client wrapper or a pure capability layer.

  1. Plugin Usage Guide
  2. Bootstrap Configuration
  3. Plugin Management
  4. the specific plugin page you are integrating
  5. Framework Architecture