Con AppFabricLa retirada del mercado de .NET, la industria de .NET sigue en la estacada para que un caché distribuido en memoria emerja como un competidor. Si bien se han presentado algunas alternativas, ninguna ofrece una solución tan completa como NCache.
NCache es un caché distribuido en memoria de código abierto que proporciona a los usuarios un caché distribuido extremadamente rápido y escalable linealmente que almacena datos de aplicaciones y reduce los costosos viajes a la base de datos. NCache es un producto de mercado probado y es anterior a App Fabric en unos cinco años. Y hay numerosas ventajas que le esperan al final de su proceso de migración, como discutimos a continuación.
NCache Detalles AppFabric Fin AppFabric Migración
1. Mantener el caché actualizado
La sincronización de la base de datos es una característica crucial para una caché distribuida en memoria de calidad. Dado que normalmente encuentra cachés distribuidos en el nivel intermedio entre las aplicaciones y una base de datos, existe una alta probabilidad de que los datos se actualicen directamente en la base de datos o en el caché de forma independiente. Este problema requiere un mecanismo para evitar datos obsoletos.
Por lo tanto, dichos cachés distribuidos deben permitirle especificar una relación o dependencia entre el elemento almacenado en caché y su elemento correspondiente en la base de datos. Por lo tanto, cada vez que cambia la base de datos, sus cambios se reflejan en la memoria caché a través de la invalidación o las actualizaciones.
Por ejemplo, NCache proporciona un Dependencia Sql soporte para SQL Server. Puede crear una dependencia de un elemento almacenado en caché con un conjunto de datos basado en declaraciones SQL. Cada vez que ese conjunto de datos específico cambia o se modifica, SQL Server envía un evento a NCachey el elemento de caché se invalida. Por ejemplo, CacheItem item = newCacheItem(myObject);
1 2 3 4 5 6 7 8 9 10 11 |
// Get orders against customerID from DB var order = FetchOrderByCustomerID("ALFKI"); // Generate a unique cache key for the order string key = $"Order:{order.OrderID}"; CacheItem item = new CacheItem(order); // Create SQL query to select the data from the database string query = "SELECT CustomerID, Address, City FROM dbo.Customers WHERE CustomerID = 'ALFKI';"; //Specify the database connection string and the query to create and set SQLCacheDependency. item.Dependency = new SqlCacheDependency(dbConnString, query); // Insert the item into the cache cache.Insert(key, item); |
Entonces, el caché se sincronizará con la base de datos. NCache también admite la misma función con Oracle, OleDB e incluso fuentes de datos no relacionales como FileSystems a través de nuestro Tienda de persistencia.
NCache Detalles Base de datos Oracle Ole DB
2. Consultas SQL
Dado que los NCachela capacidad de sincronización de, es fácil considerar mantener todos sus datos en el caché. Desafortunadamente, esto presentaría un pequeño problema ya que la búsqueda solo es posible a través de sus datos almacenados en caché si la única opción es obtener a través de Key. NCache ofrece una solución a esto a través de consultas SQL. Esto es posible por indexación atributos de objetos .NET seleccionados y realizar consultas de búsqueda.
1 2 3 4 5 6 7 8 9 |
//string query = "SELECT * FROM FQN.Product WHERE UnitsInStock > ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("UnitsInStock",0); ICacheReader reader = cache.ExecuteReader(queryCommand); while (reader.Read()) { string ID = reader.GetValue("ProductID"); string Name = reader.GetValue("ProductName"); } |
Para mejorar la experiencia de los desarrolladores, NCache también te permite asignar grupos, etiquetasy etiquetas con nombre a sus elementos almacenados en caché que luego puede usar en sus consultas SQL para obtener elementos rápidamente.
3. Consulta LINQ
De manera similar, los NCache ofrece a los usuarios la oportunidad de recorrer sus datos a través de consultas LINQ, como se demuestra a continuación.
1 2 3 4 |
IQueryable products = new NCacheQuery(cache); var result = from prod in products where prod.ProductID > 1001 select prod; |
Además, puede personalizar aún más estas consultas utilizando el identificador lógico, Agregacióny Comodín Operaciones
NCache Detalles Consultas SQL Consultas LINQ
4. Código del lado del servidor
A menudo, los cachés distribuidos solo ayudan a las aplicaciones a obtener datos de la base de datos e insertarlos en el caché. Sin embargo, otro enfoque consiste en que su aplicación delegue esta responsabilidad a la memoria caché distribuida. Esencialmente, cuando su aplicación solicita un elemento del caché, determina si el elemento en cuestión existe en el caché o no y carga los datos correspondientes de la base de datos. Esta característica se llama leer de parte a parte. NCache ofrece una similar escriba por medio de opción, que permite operaciones de escritura directamente en la fuente de datos a través del caché.
Y NCache, funcionalidad del lado del servidor va mucho más allá con Cache Loader & Refresher. Esta característica superó con éxito la brecha de rendimiento inicial que enfrentan todos los cachés al iniciarse, ya que, para empezar, están vacíos. Puede usar el cargador para identificar los datos que necesita y precargarlos. La actualización simplemente existe para garantizar que estos datos no se vuelvan obsoletos.
NCahttps://www.alachisoft.com/resources/docs/ncache/prog-guide/server-side-api-programming.htmlche también proporciona un marco MapReduce completo en el que puede realizar análisis de sus datos almacenados en caché y producir información procesable en tiempo real. El código de MapReduce está escrito en .NET y, por lo tanto, se ejecuta dentro del NCache .
NCache Detalles Mapa reducido NCache Cargador y actualización
5. Caché del cliente (caché cercano)
A Caché de cliente, es local para su servidor web o aplicación y le permite almacenar en caché datos de uso frecuente dentro del mismo proceso o máquina servidor. Por lo tanto, una caché de cliente es una caché de afinidad, lo que le da a su aplicación un aumento adicional en el rendimiento al disminuir los costos de ancho de banda de la red sin comprometer la integridad de los datos. Un caché de cliente funciona con todos NCache agrupado topologías de almacenamiento en caché (Duplicado, Particionado y Caché de Réplica de Partición).
Lo hace permaneciendo conectado al clúster de caché y sincronizando replicando los cambios en el clúster de caché principal. La diferencia entre AppFabric caché local y el NCache caché del cliente es que AppFabric La memoria caché local es independiente y no crea una conexión con el clúster principal.
6. Soporte para múltiples centros de datos
La replicación WAN es otra característica fundamental para las cachés distribuidas en memoria de alto calibre que AppFabric carece Es más útil con centros de datos distribuidos geográficamente, para recuperación ante desastres o balanceo de carga para tráfico localizado.
NCache proporciona topologías de puente para manejar las latencias de WAN. los NCache Puente replica y mantiene la coherencia en diferentes cachés de todo el mundo. Tiene la opción de mantener su clúster de caché pasivo para imitar una réplica de clúster para la recuperación ante desastres o sincronizar dos cachés separados en diferentes centros de datos. Los datos se replican de forma asincrónica a través de conexiones de Internet seguras.
NCache Detalles Caché de cliente Replicación WAN
7. Clúster dinámico
Como todo AppFabric los clientes probablemente saben que su clúster no es completamente dinámico. La dependencia de Microsoft en su regla de mayoría de hosts principales significa un clúster muy falible, que se cae con bastante facilidad si incluso uno de los hosts principales falla. Estos nodos de host principales también se asemejan a la arquitectura maestro y esclavo y tampoco son completamente peer-to-peer.
Alternativamente, NCache is altamente dinámico y le permite agregar o eliminar servidores de caché en tiempo de ejecución sin interrupción. Los datos se reequilibran automáticamente (o transferido por el estado) en tiempo de ejecución sin ninguna degradación del rendimiento. NCache los clientes mantienen automáticamente el canal de comunicación con los servidores de caché, independientemente del estado del servidor. Además, sus clústeres de caché aseguran la ejecución de las operaciones del cliente incluso cuando el balance de datos (transferencia de estado) está en proceso.
Esto significa que no existen nodos maestros o esclavos en el clúster. Hay un nodo coordinador primario que es el nodo senior. Y si se cae, el siguiente nodo más antiguo se convierte automáticamente en el coordinador principal. Todo esto sucede sin ninguna interrupción en las operaciones del cliente.
8. Integraciones de terceros
Para acabar, NCache admite oficialmente proveedores para diferentes bibliotecas de terceros importantes, como:
- Entity Framework Core Cache
- Caché de Entity Framework
- Caché de segundo nivel de NHibernate
- Estado de sesión ASP y almacenamiento en caché de estado de vista
Conclusión
En breve, NCache presenta una amplia gama de características que las empresas usan y requieren en sus aplicaciones .NET. Particularmente, los que AppFabric no llegó a introducir en ningún momento de su ciclo de vida. Entonces, si desea dar lo mejor de sí e invertir en un sistema de almacenamiento en caché distribuido que realmente satisfaga sus necesidades, descargue NCache para una migración sin dolor.
NCache Detalles Descargar NCache Comparación de ediciones