pub struct DMSCServiceMesh { /* private fields */ }Expand description
Main service mesh struct implementing the DMSCModule trait.
This struct provides comprehensive service mesh functionality, including service discovery, health checking, traffic management, load balancing, and circuit breaking.
Implementations§
Source§impl DMSCServiceMesh
impl DMSCServiceMesh
pub fn new(config: DMSCServiceMeshConfig) -> DMSCResult<Self>
pub fn with_tracer(self, tracer: Arc<DMSCTracer>) -> Self
pub fn set_tracer(&mut self, tracer: Arc<DMSCTracer>)
Sourcepub async fn register_service(
&self,
service_name: &str,
endpoint: &str,
weight: u32,
metadata: Option<HashMap<String, String>>,
) -> DMSCResult<()>
pub async fn register_service( &self, service_name: &str, endpoint: &str, weight: u32, metadata: Option<HashMap<String, String>>, ) -> DMSCResult<()>
Registers a service endpoint with the service mesh.
§Parameters
service_name: The name of the serviceendpoint: The endpoint URL of the serviceweight: The weight of the endpoint for load balancingmetadata: Optional metadata associated with the service
§Returns
A DMSCResult<()> indicating success or failure
Sourcepub async fn register_versioned_service(
&self,
service_name: &str,
version: &str,
endpoint: &str,
weight: u32,
metadata: Option<HashMap<String, String>>,
) -> DMSCResult<()>
pub async fn register_versioned_service( &self, service_name: &str, version: &str, endpoint: &str, weight: u32, metadata: Option<HashMap<String, String>>, ) -> DMSCResult<()>
Registers a service with full metadata including version information.
Sourcepub async fn unregister_service(
&self,
service_name: &str,
endpoint: &str,
) -> DMSCResult<()>
pub async fn unregister_service( &self, service_name: &str, endpoint: &str, ) -> DMSCResult<()>
Unregisters a service endpoint from the service mesh.
Sourcepub async fn get_all_endpoints(
&self,
service_name: &str,
) -> DMSCResult<Vec<DMSCServiceEndpoint>>
pub async fn get_all_endpoints( &self, service_name: &str, ) -> DMSCResult<Vec<DMSCServiceEndpoint>>
Gets all registered endpoints for a service regardless of health status.
Sourcepub async fn get_stats(&self) -> DMSCServiceMeshStats
pub async fn get_stats(&self) -> DMSCServiceMeshStats
Gets service mesh statistics.
Sourcepub async fn discover_service(
&self,
service_name: &str,
) -> DMSCResult<Vec<DMSCServiceEndpoint>>
pub async fn discover_service( &self, service_name: &str, ) -> DMSCResult<Vec<DMSCServiceEndpoint>>
Sourcepub async fn call_service(
&self,
service_name: &str,
request_data: Vec<u8>,
) -> DMSCResult<Vec<u8>>
pub async fn call_service( &self, service_name: &str, request_data: Vec<u8>, ) -> DMSCResult<Vec<u8>>
Calls a service with the given request data.
This method performs the following steps:
- Discovers healthy endpoints for the service
- Selects a server using the load balancer
- Checks the circuit breaker status
- Executes the service call with retry logic
- Records success/failure with the circuit breaker
§Parameters
service_name: The name of the service to callrequest_data: The request data to send to the service
§Returns
A DMSCResult<Vec<u8>> containing the response from the service
Sourcepub async fn update_service_health(
&self,
service_name: &str,
endpoint: &str,
is_healthy: bool,
) -> DMSCResult<()>
pub async fn update_service_health( &self, service_name: &str, endpoint: &str, is_healthy: bool, ) -> DMSCResult<()>
Sourcepub fn get_circuit_breaker(&self) -> &DMSCCircuitBreaker
pub fn get_circuit_breaker(&self) -> &DMSCCircuitBreaker
Sourcepub fn get_load_balancer(&self) -> &DMSCLoadBalancer
pub fn get_load_balancer(&self) -> &DMSCLoadBalancer
Sourcepub fn get_health_checker(&self) -> &DMSCHealthChecker
pub fn get_health_checker(&self) -> &DMSCHealthChecker
Sourcepub fn get_traffic_manager(&self) -> &DMSCTrafficManager
pub fn get_traffic_manager(&self) -> &DMSCTrafficManager
Sourcepub fn get_service_discovery(&self) -> &DMSCServiceDiscovery
pub fn get_service_discovery(&self) -> &DMSCServiceDiscovery
Returns a reference to the service discovery component.
§Returns
A reference to the DMSCServiceDiscovery instance
Trait Implementations§
Source§impl DMSCModule for DMSCServiceMesh
impl DMSCModule for DMSCServiceMesh
Source§fn is_critical(&self) -> bool
fn is_critical(&self) -> bool
Indicates whether the service mesh module is critical.
The service mesh is marked as critical because it’s essential for the operation of distributed services in the system.
§Returns
true since service mesh is critical
Source§fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn before_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn after_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn before_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<'py> IntoPyObject<'py> for DMSCServiceMesh
impl<'py> IntoPyObject<'py> for DMSCServiceMesh
Source§type Target = DMSCServiceMesh
type Target = DMSCServiceMesh
Source§type Output = Bound<'py, <DMSCServiceMesh as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DMSCServiceMesh as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for DMSCServiceMesh
impl PyClass for DMSCServiceMesh
Source§impl PyClassImpl for DMSCServiceMesh
impl PyClassImpl for DMSCServiceMesh
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = c"Main service mesh struct implementing the DMSCModule trait.\n\nThis struct provides comprehensive service mesh functionality, including service discovery,\nhealth checking, traffic management, load balancing, and circuit breaking.\x00"
const RAW_DOC: &'static CStr = c"Main service mesh struct implementing the DMSCModule trait.\n\nThis struct provides comprehensive service mesh functionality, including service discovery,\nhealth checking, traffic management, load balancing, and circuit breaking.\x00"
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<DMSCServiceMesh>
type ThreadChecker = SendablePyClass<DMSCServiceMesh>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature for DMSCServiceMesh
impl PyClassNewTextSignature for DMSCServiceMesh
const TEXT_SIGNATURE: &'static str = "(config)"
Source§impl PyMethods<DMSCServiceMesh> for PyClassImplCollector<DMSCServiceMesh>
impl PyMethods<DMSCServiceMesh> for PyClassImplCollector<DMSCServiceMesh>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for DMSCServiceMesh
impl PyTypeInfo for DMSCServiceMesh
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.impl DerefToPyAny for DMSCServiceMesh
impl ExtractPyClassWithClone for DMSCServiceMesh
Auto Trait Implementations§
impl Freeze for DMSCServiceMesh
impl !RefUnwindSafe for DMSCServiceMesh
impl Send for DMSCServiceMesh
impl Sync for DMSCServiceMesh
impl Unpin for DMSCServiceMesh
impl !UnwindSafe for DMSCServiceMesh
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more