You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brpc.apache.org by zy...@apache.org on 2021/08/05 11:03:35 UTC
[incubator-brpc] 01/01: Add DomainListNamingService which resolves
services from the list periodically
This is an automated email from the ASF dual-hosted git repository.
zychen pushed a commit to branch czy_dev
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git
commit 661aa7a26585e2c461d57aea4501dc3efd5288b3
Author: Zhangyi Chen <fr...@gmail.com>
AuthorDate: Thu Aug 5 18:58:04 2021 +0800
Add DomainListNamingService which resolves services from the list periodically
---
src/brpc/global.cpp | 2 ++
src/brpc/policy/list_naming_service.cpp | 26 ++++++++++++++++++++++++--
src/brpc/policy/list_naming_service.h | 13 +++++++++++++
src/brpc/socket_map.h | 2 +-
4 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/src/brpc/global.cpp b/src/brpc/global.cpp
index 2f65411..ced8a11 100755
--- a/src/brpc/global.cpp
+++ b/src/brpc/global.cpp
@@ -129,6 +129,7 @@ struct GlobalExtensions {
#endif
FileNamingService fns;
ListNamingService lns;
+ DomainListNamingService dlns;
DomainNamingService dns;
DomainNamingService dns_with_ssl;
RemoteFileNamingService rfns;
@@ -350,6 +351,7 @@ static void GlobalInitializeOrDieImpl() {
#endif
NamingServiceExtension()->RegisterOrDie("file", &g_ext->fns);
NamingServiceExtension()->RegisterOrDie("list", &g_ext->lns);
+ NamingServiceExtension()->RegisterOrDie("dlist", &g_ext->dlns);
NamingServiceExtension()->RegisterOrDie("http", &g_ext->dns);
NamingServiceExtension()->RegisterOrDie("https", &g_ext->dns_with_ssl);
NamingServiceExtension()->RegisterOrDie("redis", &g_ext->dns);
diff --git a/src/brpc/policy/list_naming_service.cpp b/src/brpc/policy/list_naming_service.cpp
index bffc9a0..3a8ba45 100644
--- a/src/brpc/policy/list_naming_service.cpp
+++ b/src/brpc/policy/list_naming_service.cpp
@@ -32,8 +32,8 @@ bool SplitIntoServerAndTag(const butil::StringPiece& line,
butil::StringPiece* server_addr,
butil::StringPiece* tag);
-int ListNamingService::GetServers(const char *service_name,
- std::vector<ServerNode>* servers) {
+int ParseServerList(const char* service_name,
+ std::vector<ServerNode>* servers) {
servers->clear();
// Sort/unique the inserted vector is faster, but may have a different order
// of addresses from the file. To make assertions in tests easier, we use
@@ -73,6 +73,11 @@ int ListNamingService::GetServers(const char *service_name,
return 0;
}
+int ListNamingService::GetServers(const char *service_name,
+ std::vector<ServerNode>* servers) {
+ return ParseServerList(service_name, servers);
+}
+
int ListNamingService::RunNamingService(const char* service_name,
NamingServiceActions* actions) {
std::vector<ServerNode> servers;
@@ -98,5 +103,22 @@ void ListNamingService::Destroy() {
delete this;
}
+int DomainListNamingService::GetServers(const char* service_name,
+ std::vector<ServerNode>* servers) {
+ return ParseServerList(service_name, servers);
+}
+
+void DomainListNamingService::Describe(std::ostream& os,
+ const DescribeOptions&) const {
+ os << "dlist";
+ return;
+}
+
+NamingService* DomainListNamingService::New() const {
+ return new DomainListNamingService;
+}
+
+void DomainListNamingService::Destroy() { delete this; }
+
} // namespace policy
} // namespace brpc
diff --git a/src/brpc/policy/list_naming_service.h b/src/brpc/policy/list_naming_service.h
index d99ab4e..0a69dee 100644
--- a/src/brpc/policy/list_naming_service.h
+++ b/src/brpc/policy/list_naming_service.h
@@ -20,6 +20,7 @@
#define BRPC_POLICY_LIST_NAMING_SERVICE
#include "brpc/naming_service.h"
+#include "brpc/periodic_naming_service.h"
namespace brpc {
@@ -43,6 +44,18 @@ private:
void Destroy() override;
};
+class DomainListNamingService : public PeriodicNamingService {
+private:
+ int GetServers(const char* service_name,
+ std::vector<ServerNode>* servers) override;
+ void Describe(std::ostream& os,
+ const DescribeOptions& options) const override;
+
+ NamingService* New() const override;
+
+ void Destroy() override;
+};
+
} // namespace policy
} // namespace brpc
diff --git a/src/brpc/socket_map.h b/src/brpc/socket_map.h
index 7a91b34..3e6695b 100644
--- a/src/brpc/socket_map.h
+++ b/src/brpc/socket_map.h
@@ -119,7 +119,7 @@ struct SocketMapOptions {
// Initial size of the map (proper size reduces number of resizes)
// Default: 1024
size_t suggested_map_size;
-
+
// Pooled connections without data transmission for so many seconds will
// be closed. No effect for non-positive values.
// If idle_timeout_second_dynamic is not NULL, use the dereferenced value
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@brpc.apache.org
For additional commands, e-mail: dev-help@brpc.apache.org