Extensión Sentino
Sentinel-dashboard: una aplicación web implementada en Spring boot, equivalente a la herramienta OPS de Sentinel. Este panel hace que sea más fácil, pero no obligatorio, ajustar reglas, consultar estadísticas en tiempo real, etc.
sentinel-transport: Sentinel-core y sentinel-dashboard se comunican entre sí. El módulo Sentinel Teleport es el puente entre Sentinel Core y Sentinel Dashboard. Si tiene una aplicación que accede a Sentinel y desea administrarla a través de un panel, debe introducir el módulo Sentinel Transport.
Sentinel-extension: módulo de extensión Sentinel, que puede realizar actualizaciones dinámicas y persistencia de reglas. Además, en este módulo también se implementan restricciones de flujo de parámetros de punto de acceso y la implementación de anotaciones.
sentinel-adapter: Extensión del adaptador para integrar fácilmente Sentinel con otros frameworks.
sentinel-cluster: extensión de limitación de clústeres, que le permite utilizar Sentinel en un entorno de clúster.
Las principales tareas de inicialización son:
Podemos especificar el orden de ejecución de InitFunc a través de la anotación @InitOrder, y la orden con un valor de orden menor se ejecutará primero.
InitFunc se activa con la primera llamada al método SphU.entry(KEY), y las funciones de inicialización registradas se ejecutarán secuencialmente.
Si no desea que la inicialización diferida se active en la primera llamada, puede llamar manualmente a la función InitExecutor.doInit(), que se ejecuta solo una vez en llamadas repetidas.
Las reglas para la degradación limitante actual se cargan en la memoria llamando al método loadRules. En aplicaciones reales, debemos conservar estas reglas porque si no lo hacemos, se perderán cuando se reinicie el sistema.
Entonces, ¿cómo extiende Sentinel el método de carga dinámica de reglas sin afectar la carga normal de reglas? Veamos cómo FlowRuleManager carga las reglas:
Las reglas en realidad se actualizan dinámicamente mediante el método updateValue de DynamicSentinelProperty.
Entonces, todo lo que tenemos que hacer es activar el método updateValue de SentinelProperty para inyectar reglas actualizadas cuando las reglas de persistencia cambian. SentinelProperty tiene una implementación predeterminada, por lo que no necesitamos extenderla, solo necesitamos implementar un evento que escuche cada fuente de datos persistentes cuando los datos cambian y los actualice en FlowRuleManager cuando se reciben los datos más recientes.
Por lo tanto, necesitamos abstraer dos interfaces para leer y escribir fuentes de datos:
Las funciones en el módulo de transporte Sentinel están básicamente relacionadas con la comunicación de red, y tenemos muchas redes. Protocolos: el módulo mon abstrae tres interfaces como puntos de extensión:
CommandCenter Se utiliza principalmente para iniciar un servidor en Sentinel-Core, que puede proporcionar interfaces API al mundo exterior. En Sentinel, hay dos implementaciones predeterminadas de ty, pero la recomendación oficial predeterminada es usar ty.
Sentinel utiliza internamente una cadena de ranuras compuesta por una serie de ranuras para completar varias funciones, incluida la creación de cadenas de llamadas, estadísticas de llamadas, verificación de reglas, etc. El orden de las tragamonedas es muy importante.
Sentinel extiende SlotChainBuilder a una interfaz SPI, proporcionando así capacidades de expansión para la cadena de ranuras. Podemos agregar funcionalidad personalizada a Sentinel agregando ranuras personalizadas y ranuras de clasificación.