diff --git a/examples/go-server/app/config.go b/examples/go-server/app/config.go index 11b0f0d6251df5dc6d7583bef64f0df4572a8163..bdf30391a1f9ad89b1e6af9fbb42b52f52f337e2 100644 --- a/examples/go-server/app/config.go +++ b/examples/go-server/app/config.go @@ -1,13 +1,3 @@ -/****************************************************** -# DESC : env var & configure -# AUTHOR : Alex Stocks -# VERSION : 1.0 -# LICENCE : Apache License 2.0 -# EMAIL : alexstocks@foxmail.com -# MOD : 2016-07-21 16:41 -# FILE : config.go -******************************************************/ - package main import ( @@ -16,14 +6,13 @@ import ( "os" "path" "time" +) +import ( "github.com/AlexStocks/goext/log" - log "github.com/AlexStocks/log4go" - - jerrors "github.com/juju/errors" - "github.com/dubbo/dubbo-go/registry" + jerrors "github.com/juju/errors" yaml "gopkg.in/yaml.v2" ) @@ -87,7 +76,8 @@ func initServerConf() *ServerConfig { return nil } if conf.Registry_Config.Timeout, err = time.ParseDuration(conf.Registry_Config.TimeoutStr); err != nil { - panic(fmt.Sprintf("time.ParseDuration(Registry_Config.Timeout:%#v) = error:%s", conf.Registry_Config.TimeoutStr, err)) + panic(fmt.Sprintf("time.ParseDuration(Registry_Config.Timeout:%#v) = error:%s", + conf.Registry_Config.TimeoutStr, err)) return nil } diff --git a/examples/go-server/app/server.go b/examples/go-server/app/server.go index cc788cef10785f7ded25f3fa3af94add0ea38c36..8cb3f03f730230e8c24db14fec72ce8c4f5d65b2 100644 --- a/examples/go-server/app/server.go +++ b/examples/go-server/app/server.go @@ -1,13 +1,3 @@ -/****************************************************** -# DESC : provider example -# AUTHOR : Alex Stocks -# VERSION : 1.0 -# LICENCE : Apache License 2.0 -# EMAIL : alexstocks@foxmail.com -# MOD : 2016-07-21 16:41 -# FILE : server.go -******************************************************/ - package main import ( @@ -18,9 +8,10 @@ import ( "os/signal" "strconv" "syscall" +) +import ( // "github.com/AlexStocks/gocolor" - "github.com/AlexStocks/goext/net" "github.com/AlexStocks/goext/time" log "github.com/AlexStocks/log4go" @@ -30,7 +21,7 @@ import ( ) var ( - survivalTimeout int = 3e9 + survivalTimeout = int(3e9) servo *jsonrpc.Server ) diff --git a/examples/go-server/app/user.go b/examples/go-server/app/user.go index 65aa049174a1e22416e31df50229d322c7957919..d8f307549b3d7faab1c9404e01048f7cbd1b4a87 100644 --- a/examples/go-server/app/user.go +++ b/examples/go-server/app/user.go @@ -1,13 +1,3 @@ -/***************************************************** -# DESC : UserProvider Service -# AUTHOR : Alex Stocks -# VERSION : 1.0 -# LICENCE : Apache License 2.0 -# EMAIL : alexstocks@foxmail.com -# MOD : 2016-07-21 19:22 -# FILE : user.go -******************************************************/ - package main import ( @@ -83,16 +73,16 @@ func init() { /* // you can define your json unmarshal function here -func (this *UserId) UnmarshalJSON(value []byte) error { - this.Id = string(value) - this.Id = strings.TrimPrefix(this.Id, "\"") - this.Id = strings.TrimSuffix(this.Id, `"`) +func (u *UserId) UnmarshalJSON(value []byte) error { + u.Id = string(value) + u.Id = strings.TrimPrefix(u.Id, "\"") + u.Id = strings.TrimSuffix(u.Id, `"`) return nil } */ -func (this *UserProvider) getUser(userId string) (*User, error) { +func (u *UserProvider) getUser(userId string) (*User, error) { if user, ok := userMap.user[userId]; ok { return &user, nil } @@ -102,12 +92,12 @@ func (this *UserProvider) getUser(userId string) (*User, error) { /* // can not work -func (this *UserProvider) GetUser(ctx context.Context, req *UserId, rsp *User) error { +func (u *UserProvider) GetUser(ctx context.Context, req *UserId, rsp *User) error { var ( err error user *User ) - user, err = this.getUser(req.Id) + user, err = u.getUser(req.Id) if err == nil { *rsp = *user gxlog.CInfo("rsp:%#v", rsp) @@ -123,14 +113,14 @@ func (this *UserProvider) GetUser(ctx context.Context, req *UserId, rsp *User) e /* // work -func (this *UserProvider) GetUser(ctx context.Context, req *string, rsp *User) error { +func (u *UserProvider) GetUser(ctx context.Context, req *string, rsp *User) error { var ( err error user *User ) gxlog.CInfo("req:%#v", *req) - user, err = this.getUser(*req) + user, err = u.getUser(*req) if err == nil { *rsp = *user gxlog.CInfo("rsp:%#v", rsp) @@ -144,30 +134,30 @@ func (this *UserProvider) GetUser(ctx context.Context, req *string, rsp *User) e } */ -func (this *UserProvider) GetUser(ctx context.Context, req []string, rsp *User) error { +func (u *UserProvider) GetUser(ctx context.Context, req []string, rsp *User) error { var ( err error user *User ) gxlog.CInfo("req:%#v", req) - user, err = this.getUser(req[0]) + user, err = u.getUser(req[0]) if err == nil { *rsp = *user gxlog.CInfo("rsp:%#v", rsp) // s, _ := json.Marshal(rsp) - // fmt.Println(string(s)) + // fmt.Println("hello0:", string(s)) // s, _ = json.Marshal(*rsp) - // fmt.Println(string(s)) + // fmt.Println("hello1:", string(s)) } return err } -func (this *UserProvider) Service() string { +func (u *UserProvider) Service() string { return "com.ikurento.user.UserProvider" } -func (this *UserProvider) Version() string { +func (u *UserProvider) Version() string { return "" } diff --git a/examples/go-server/app/version.go b/examples/go-server/app/version.go index 520c7dc6b9946aad8996b6da2af0b4fbd6f727bc..c7552b26e11ec15fd51f3e18905d35d577647cd7 100644 --- a/examples/go-server/app/version.go +++ b/examples/go-server/app/version.go @@ -1,15 +1,5 @@ -/****************************************************** -# DESC : client version -# AUTHOR : Alex Stocks -# VERSION : 1.0 -# LICENCE : Apache License 2.0 -# EMAIL : alexstocks@foxmail.com -# MOD : 2016-07-21 16:41 -# FILE : version.go -******************************************************/ - package main var ( - Version string = "0.2.0" + Version string = "0.3.1" ) diff --git a/examples/go-server/profiles/dev/server.yml b/examples/go-server/profiles/dev/server.yml index 7b202f9311f74c2aadd217ddaceb9b18e4e4f8cf..99a7d849ff34f0b17ca2ccb1a0bab6a27549c082 100644 --- a/examples/go-server/profiles/dev/server.yml +++ b/examples/go-server/profiles/dev/server.yml @@ -15,6 +15,7 @@ application_config: module : "dubbogo user-info server" version : "0.0.1" owner : "ZX" + environment: "dev" registry_config: timeout : "3s" diff --git a/examples/go-server/profiles/release/server.yml b/examples/go-server/profiles/release/server.yml index 7b202f9311f74c2aadd217ddaceb9b18e4e4f8cf..d41930a809c4d4632dc114774a934569ef1e528c 100644 --- a/examples/go-server/profiles/release/server.yml +++ b/examples/go-server/profiles/release/server.yml @@ -15,6 +15,7 @@ application_config: module : "dubbogo user-info server" version : "0.0.1" owner : "ZX" + environment: "product" registry_config: timeout : "3s" diff --git a/examples/go-server/profiles/test/server.yml b/examples/go-server/profiles/test/server.yml index 7b202f9311f74c2aadd217ddaceb9b18e4e4f8cf..8fb8b5343e5b49d9886b48bcec3455b239b411ff 100644 --- a/examples/go-server/profiles/test/server.yml +++ b/examples/go-server/profiles/test/server.yml @@ -15,6 +15,7 @@ application_config: module : "dubbogo user-info server" version : "0.0.1" owner : "ZX" + environment: "test" registry_config: timeout : "3s" diff --git a/examples/java-client/src/main/java/com/ikurento/user/Consumer.java b/examples/java-client/src/main/java/com/ikurento/user/Consumer.java index 8156c73707d650465c4f80a33c47e2b642751224..5830ac716e8d2ea6a72b3c5921f29a734796a997 100755 --- a/examples/java-client/src/main/java/com/ikurento/user/Consumer.java +++ b/examples/java-client/src/main/java/com/ikurento/user/Consumer.java @@ -39,7 +39,7 @@ public class Consumer { private void testGetUser() throws Exception { try { - User user1 = userProvider.GetUser("003"); + User user1 = userProvider.GetUser("A003"); System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " + " UserInfo, Id:" + user1.getId() + ", name:" + user1.getName() + ", sex:" + user1.getSex().toString() + ", age:" + user1.getAge() + ", time:" + user1.getTime().toString()); @@ -51,9 +51,9 @@ public class Consumer { private void testGetUsers() throws Exception { try { List<String> userIDList = new ArrayList<String>(); - userIDList.add("001"); - userIDList.add("002"); - userIDList.add("003"); + userIDList.add("A001"); + userIDList.add("A002"); + userIDList.add("A003"); List<User> userList = userProvider.GetUsers(userIDList); @@ -72,6 +72,7 @@ public class Consumer { public void start() throws Exception { testGetUser(); // testGetUsers(); - Thread.sleep(120000); +// Thread.sleep(120000); +Thread.sleep(2000); } } diff --git a/examples/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml b/examples/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml index 82dd79656f4108b3b53d1292ccd64060454a8666..c01f4ab064a83aa62adc7de676cdaede7108bd23 100644 --- a/examples/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml +++ b/examples/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml @@ -33,9 +33,9 @@ <dubbo:protocol id="jsonrpc" name="jsonrpc" /> <!-- 声明需要使用的服务接口 --> - <!-- dubbo:reference id="userProvider" protocol="jsonrpc" interface="com.ikurento.user.UserProvider" / --> - <dubbo:reference id="userProvider" protocol="dubbo" interface="com.ikurento.user.UserProvider"> - <dubbo:parameter key="heartbeat" value="10000"/> + <dubbo:reference id="userProvider" protocol="jsonrpc" interface="com.ikurento.user.UserProvider"> + <!-- dubbo:reference id="userProvider" protocol="dubbo" interface="com.ikurento.user.UserProvider"> + <dubbo:parameter key="heartbeat" value="10000"/ --> </dubbo:reference> </beans> diff --git a/examples/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java b/examples/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java index bbb1ef8d608028d12feaf493703a7b950c97fb5f..2464ca1c2c5dbb3b615315ba91decae2cd6d7166 100755 --- a/examples/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java +++ b/examples/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java @@ -19,10 +19,10 @@ public class UserProviderImpl implements UserProvider { Map<String, User> userMap = new HashMap<String, User>(); public UserProviderImpl() { - userMap.put("001", new User("001", "demo-zhangsan", 18)); - userMap.put("002", new User("002", "demo-lisi", 20)); - userMap.put("003", new User("003", "demo-lily", 23)); - userMap.put("004", new User("004", "demo-lisa", 32)); + userMap.put("A001", new User("A001", "demo-zhangsan", 18)); + userMap.put("A002", new User("A002", "demo-lisi", 20)); + userMap.put("A003", new User("A003", "demo-lily", 23)); + userMap.put("A004", new User("A004", "demo-lisa", 32)); } public boolean isLimit(Gender gender, String name) { diff --git a/jsonrpc/http.go b/jsonrpc/http.go index 3ba0d25edb09d8c1c15373501b95b37115fd481c..aa249e7a3b2b4547853512d9af69eec987f5a7fd 100644 --- a/jsonrpc/http.go +++ b/jsonrpc/http.go @@ -106,7 +106,7 @@ func (c *HTTPClient) Call(ctx context.Context, service registry.ServiceURL, req reqTimeout := c.options.HTTPTimeout if len(service.Query.Get("timeout")) != 0 { - if timeout, err := time.ParseDuration(service.Query.Get("timeout")+"s"); err == nil { + if timeout, err := time.ParseDuration(service.Query.Get("timeout") + "s"); err == nil { if timeout < reqTimeout { reqTimeout = timeout } diff --git a/jsonrpc/map.go b/jsonrpc/map.go index d56aa75a449bacd433e24480489c9008f18ec8a6..e423933910b1a0163e30f56655518a5e42a7312b 100644 --- a/jsonrpc/map.go +++ b/jsonrpc/map.go @@ -258,8 +258,10 @@ func (server *serviceMap) serveRequest(ctx context.Context, return jerrors.Trace(err) } rsp := &http.Response{ - Header: make(http.Header), StatusCode: code, + ProtoMajor: 1, + ProtoMinor: 1, + Header: make(http.Header), ContentLength: int64(len(rspStream)), Body: ioutil.NopCloser(bytes.NewReader(rspStream)), } diff --git a/registry/provider.go b/registry/provider.go index e80cdfd98156b8d7a5bc5237c72e66741fa0cf87..bf6ed222ef81834d5a66f2b03d076328e30e94ea 100644 --- a/registry/provider.go +++ b/registry/provider.go @@ -22,6 +22,7 @@ import ( ////////////////////////////////////////////// const ( + defaultTimeout = int64(10e9) ProviderRegistryZkClient = "provider zk registry" ) @@ -84,7 +85,7 @@ type ZkProviderRegistry struct { func NewZkProviderRegistry(opts ...Option) (*ZkProviderRegistry, error) { r := &ZkProviderRegistry{ - birth: time.Now().Unix(), + birth: time.Now().UnixNano(), done: make(chan struct{}), services: make(map[string]ServiceConfigIf), zkPath: make(map[string]int), @@ -220,8 +221,11 @@ func (r *ZkProviderRegistry) register(conf *ProviderServiceConfig) error { } params = url.Values{} - params.Add("interface", conf.ServiceConfig.Service) + params.Add("anyhost", "true") params.Add("application", r.ApplicationConfig.Name) + params.Add("default.timeout", fmt.Sprintf("%d", defaultTimeout/1e6)) + params.Add("environment", r.ApplicationConfig.Environment) + params.Add("interface", conf.ServiceConfig.Service) revision = r.ApplicationConfig.Version if revision == "" { revision = "0.1.0" @@ -241,9 +245,8 @@ func (r *ZkProviderRegistry) register(conf *ProviderServiceConfig) error { params.Add("side", (DubboType(PROVIDER)).Role()) params.Add("pid", processID) params.Add("ip", localIP) - params.Add("timeout", fmt.Sprintf("%v", r.Timeout.Seconds())) - // params.Add("timestamp", time.Now().Format("20060102150405")) - params.Add("timestamp", fmt.Sprintf("%d", r.birth)) + params.Add("timeout", fmt.Sprintf("%d", int64(r.Timeout)/1e6)) + params.Add("timestamp", fmt.Sprintf("%d", r.birth/1e6)) if conf.ServiceConfig.Version != "" { params.Add("version", conf.ServiceConfig.Version) } diff --git a/registry/registry.go b/registry/registry.go index 7172425af17eb2c7c823237501d0d2873e48d307..437756b1db5540e33dcde16fd4516b009974efe9 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -29,6 +29,7 @@ type ApplicationConfig struct { Module string `yaml:"module" json:"module,omitempty"` Version string `yaml:"version" json:"version,omitempty"` Owner string `yaml:"owner" json:"owner,omitempty"` + Environment string `yaml:"environment" json:"environment,omitempty"` } func (c *ApplicationConfig) ToString() string { @@ -37,11 +38,11 @@ func (c *ApplicationConfig) ToString() string { } type RegistryConfig struct { - Address []string `required:"true" yaml:"address" json:"address,omitempty"` - UserName string `yaml:"user_name" json:"user_name,omitempty"` - Password string `yaml:"password" json:"password,omitempty"` - TimeoutStr string `yaml:"timeout" default:"5s" json:"timeout,omitempty"` // unit: second - Timeout time.Duration `yaml:"-" json:"-"` + Address []string `required:"true" yaml:"address" json:"address,omitempty"` + UserName string `yaml:"user_name" json:"user_name,omitempty"` + Password string `yaml:"password" json:"password,omitempty"` + TimeoutStr string `yaml:"timeout" default:"5s" json:"timeout,omitempty"` // unit: second + Timeout time.Duration `yaml:"-" json:"-"` } //////////////////////////////////////////////