Surging

Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. support Event-based Asynchronous Pattern and reactive programming ,The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service governance to ensure reliable RPC communication, the engine contains Diagnostic, link tracking for protocol and middleware calls, and integration SkyWalking Distributed APM
Alternatives To Surging
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Traefik44,778272 days ago183July 24, 2023635mitGo
The Cloud Native Application Proxy
Patroni5,754
13 days ago67August 03, 202351mitPython
A template for PostgreSQL High Availability with Etcd, Consul, ZooKeeper, or Kubernetes
Discovery5,31212 months ago436March 20, 202310apache-2.0Java
☀️ Nepxion Discovery is a solution for Spring Cloud with blue green, gray, route, limitation, circuit breaker, degrade, isolation, tracing, dye, failover, active 蓝绿灰度发布、路由、限流、熔断、降级、隔离、追踪、流量染色、故障转移、多活
Light 4j3,505129292 days ago180August 08, 202330apache-2.0Java
A fast, lightweight and more productive microservices framework
Surging3,1987306 months ago27April 21, 2019251mitC#
Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. support Event-based Asynchronous Pattern and reactive programming ,The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service governance to ensure reliable RPC communication, the engine contains Diagnostic, link tracking for protocol and middleware calls, and integration SkyWalking Distributed APM
Dynamic Tp2,878
4 days ago7June 13, 202232apache-2.0Java
🔥🔥🔥轻量级动态线程池,内置监控告警功能,集成三方中间件线程池管理,基于主流配置中心(已支持Nacos、Apollo,Zookeeper、Consul、Etcd,可通过SPI自定义实现)。Lightweight dynamic threadpool, with monitoring and alarming functions, base on popular config centers (already support Nacos、Apollo、Zookeeper、Consul, can be customized through SPI).
Dockerfiles1,160
2 months ago15mitShell
50+ DockerHub public images for Docker & Kubernetes - DevOps, CI/CD, GitHub Actions, CircleCI, Jenkins, TeamCity, Alpine, CentOS, Debian, Fedora, Ubuntu, Hadoop, Kafka, ZooKeeper, HBase, Cassandra, Solr, SolrCloud, Presto, Apache Drill, Nifi, Spark, Consul, Riak
Nagios Plugins1,105
2 months ago66otherPython
450+ AWS, Hadoop, Cloud, Kafka, Docker, Elasticsearch, RabbitMQ, Redis, HBase, Solr, Cassandra, ZooKeeper, HDFS, Yarn, Hive, Presto, Drill, Impala, Consul, Spark, Jenkins, Travis CI, Git, MySQL, Linux, DNS, Whois, SSL Certs, Yum Security Updates, Kubernetes, Cloudera etc...
Jim Framework534
10 months ago11apache-2.0Java
一些公共组件及学习应用:RPC/统一配置中心/基于注解的分布式锁/dubbo请求级缓存/调用链追踪/RabbitMQ/Elasticsearch/zookeeper/Sping boot
Traefik Certs Dumper375
2 months ago37December 12, 202115otherGo
Dump ACME data from Traefik to certificates
Alternatives To Surging
Select To Compare


Alternative Project Comparisons
Readme

surging English

Member project of .NET Core Community GitHub license

surging ,RPCZookeeperConsulsurgingRPCnettythrift


surging

,,,.net core surging.net core,

CRUD

service host,eventbus,rpc

docker k8srancherdocker

2.ServiceId RoutePath

3.surging

  1. Devops,

docker hub : docker pull serviceengine/surging:

nuget:Install-Package surging -Version

var host = new ServiceHostBuilder()
               .RegisterServices(builder =>
               {
                   builder.AddMicroService(option =>
                   {
                       option.AddServiceRuntime();//
                       option.AddRelateService();//
                        option.AddConfigurationWatch();//
                       // option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); //Zookeeper
                       option.UseConsulManager(new ConfigInfo("127.0.0.1:8500"));//Consul
                       option.UseDotNettyTransport();//Netty
                       option.UseRabbitMQTransport();//rabbitmq 
                       option.AddRabbitMQAdapt();//rabbitmq
                     //  option.UseProtoBufferCodec();//protobuf
                       option.UseMessagePackCodec();//MessagePack
                       builder.Register(p => new CPlatformContainer(ServiceLocator.Current));//
                   });
               })
               .SubscribeAt()     //
             //.UseServer("127.0.0.1", 98)
             //.UseServer("127.0.0.1", 98true) //Token
             //.UseServer("127.0.0.1", 98123456789) //Token
               .UseServer(options=> {
                   options.Ip = "127.0.0.1";
                   options.Port = 98;
                   //options.IpEndpoint = new IPEndPoint(IPAddress.Any, 98);
                   //options.Ip = "0.0.0.0";
                   options.ExecutionTimeoutInMilliseconds = 30000; //
                   options.Strategy=(int)StrategyType.Failover; //
                   options.RequestCacheEnabled=true; //
                   options.Injection="return null"; //
                   options.InjectionNamespaces= new string[] { "Surging.IModuleServices.Common" }); //
                   options.BreakeErrorThresholdPercentage=50;  //
                   options.BreakeSleepWindowInMilliseconds=60000; //
                   options.BreakerForceClosed=false;   //
                   options.BreakerRequestVolumeThreshold = 20;//10
                   options.MaxConcurrentRequests=100000;//
                   options.ShuntStrategy=AddressSelectorMode.Polling; //
                   options.NotRelatedAssemblyFiles = "Centa.Agency.Application.DTO\\w*|StackExchange.Redis\\w*"; //
               })
               //.UseLog4net("Configs/log4net.config") //log4net
               .UseNLog(LogLevel.Error, "Configs/NLog.config")// NLog 
               //.UseLog4net(LogLevel.Error) //log4net
               //.UseLog4net()  //log4net
               .Configure(build =>
               build.AddEventBusFile("eventBusSettings.json", optional: false))//eventBusSettings.json
               .Configure(build =>
                build.AddCacheFile("cacheSettings.json", optional: false))//cacheSettings.json
               .UseProxy() //Proxy
               .UseStartup<Startup>()
               .Build();
               
           using (host.Run())
           {
               Console.WriteLine($"{DateTime.Now}");
           }

{
  "ConnectionString": "${Register_Conn}|127.0.0.1:8500", // ${} |,
  "SessionTimeout": "${Register_SessionTimeout}|50",
  "ReloadOnChange": true
}

 {
  "Ip": "${Server_IP}|127.0.0.1",
  "WatchInterval": 30,
  "Port": "${Server_port}",
  "Token": "true",
   "Protocol": "${Protocol}|Tcp", //Http,Tcp
  "RootPath": "${RootPath}",
  "RequestCacheEnabled": false
}

 {
  "Ip": "${Server_IP}|0.0.0.0",//IP
  "WatchInterval": 30,
  "Port": "${Server_port}|98",//
   "MappingIp": "${Mapping_ip}",//IP
  "MappingPort": "${Mapping_Port}",//
   "Protocol": "${Protocol}|Tcp", //Http,Tcp
  "Token": "true",
  "RootPath": "${RootPath}",
  "RequestCacheEnabled": false
}


[ServiceBundle("api/{Service}")]

JWT

   [Authorization(AuthType = AuthorizationType.JWT)];

AppSecret

 [Authorization(AuthType = AuthorizationType.AppSecret)];


 ServiceLocator.GetService< ISubscriptionAdapt >().SubscribeAt();

  • Injection

[Command(Strategy= StrategyType.Injection ,Injection = @"return null;")]

[Command(Strategy= StrategyType.Injection ,Injection = @"return 
Task.FromResult(new Surging.IModuleServices.Common.Models.UserModel
         {
            Name=""fanly"",
            Age=18
         });",InjectionNamespaces =new string[] { "Surging.IModuleServices.Common"})] 
  • Injection

[Command(Strategy= StrategyType.Injection ,Injection = @"return true;")] 



   [Command(Strategy= StrategyType.Failover,FailoverCluster =3,RequestCacheEnabled =true)]  //RequestCacheEnabled =true 



 [InterceptMethod(CachingMethod.Get, Key = "GetUser_id_{0}", Mode = CacheTargetType.Redis, Time = 480)]



  [InterceptMethod(CachingMethod.Remove, "GetUser_id_{0}", "GetUserName_name_{0}", Mode = CacheTargetType.Redis)]

KEY

[CacheKey(1)]


 .AddClientIntercepted(typeof(CacheProviderInterceptor))

surging

IDE:Visual Studio 2017 15.5,vscode
.NET core 2.1
QQ615562965

Popular Consul Projects
Popular Zookeeper Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Redis
Microservices
Kafka
Swagger
Rabbitmq
Grpc
Apollo
Zookeeper
Consul
Api Gateway
Dns Server
Messagepack
Nlog
Json Serialization