dryad-cluster 0.3.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47db0689f72f9ade1deb6c6636335eedd5b552fd1f95ee8e6864fc3830490f01
4
- data.tar.gz: 10e0f512212026c39b8722886bbf66da659f3477c1e5accd0b664730087bafb5
3
+ metadata.gz: 0db3cbd897cd5145c8f1261ce24a798f8c6c2f1f7a4fc6f1f85f5e146692574e
4
+ data.tar.gz: 240feda3a42cdabef736f36b9776d54e824eaacad20d0d9873959c3a974023e5
5
5
  SHA512:
6
- metadata.gz: cec169a54d5e5818ff752e1ffef690d60ac7228a39a009b521f26734a27519d596434c2607c6f5b9e714a3be943a146662fb2f53893aea6847a9f5e045c65ab7
7
- data.tar.gz: 1a54bf2540313a87aba551862e8dd4839e3fcf4632ed370934dd7bc330b995c950e398fbbacf546baea58e000b33141c8511d6f039852ced7aa9e6dd2529008e
6
+ metadata.gz: 802b6786733904f184ff4d8f105459ebce7866c3abb612f085ff9bb8feb99fce49cb29d656e3c60dcc0024471a996480d35990e4bfdb96c29eeeedf513ed7cce
7
+ data.tar.gz: d3b5691eccaa81fa8fad6c630f06a449329ac6ce257fb6f5e81156314cdf9f83cbffc11628a2ad938ada736264e6acf4ab03fa391fd5e5a392dadcdd905fe0fd
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dryad-cluster (0.3.4)
4
+ dryad-cluster (1.0.0)
5
5
  concurrent-ruby (~> 1.1, >= 1.1.5)
6
- dryad-consul (= 0.3.4)
7
- dryad-core (= 0.3.4)
6
+ dryad-consul (= 1.0.0)
7
+ dryad-core (= 1.0.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -15,11 +15,11 @@ GEM
15
15
  diplomat (2.2.5)
16
16
  deep_merge (~> 1.0, >= 1.0.1)
17
17
  faraday (~> 0.9)
18
- dryad-consul (0.3.4)
18
+ dryad-consul (1.0.0)
19
19
  concurrent-ruby (~> 1.1, >= 1.1.5)
20
20
  diplomat (~> 2.2, >= 2.2.4)
21
- dryad-core (= 0.3.4)
22
- dryad-core (0.3.4)
21
+ dryad-core (= 1.0.0)
22
+ dryad-core (1.0.0)
23
23
  faraday (0.15.4)
24
24
  multipart-post (>= 1.2, < 3)
25
25
  multipart-post (2.1.1)
data/lib/dryad/cluster.rb CHANGED
@@ -4,6 +4,7 @@ require "dryad/consul"
4
4
  require "dryad/cluster/railtie" if defined?(Rails)
5
5
  require "dryad/cluster/version"
6
6
  require "dryad/cluster/round_robin"
7
+ require "dryad/cluster/service_observer"
7
8
 
8
9
  module Dryad
9
10
  module Cluster
@@ -19,7 +20,8 @@ module Dryad
19
20
  full_name = Dryad::Core::Service.full_name(schema, service_name)
20
21
  if CLUSTERS[full_name].nil?
21
22
  CLUSTERS[full_name] = Dryad::Cluster::RoundRobin.new
22
- CLUSTERS[full_name].set_services(sorted_instances(service_name, schema, groups))
23
+ observer = Dryad::Cluster::ServiceObserver.new(CLUSTERS[full_name])
24
+ CLUSTERS[full_name].set_services(sorted_instances(service_name, schema, groups, observer))
23
25
  end
24
26
  begin
25
27
  retries ||= 0
@@ -30,9 +32,9 @@ module Dryad
30
32
  end
31
33
  end
32
34
 
33
- def sorted_instances(service_name, schema, groups)
34
- registry = Object.const_get(@configuration.registry)
35
- sis = registry.service_instances(service_name, schema, groups)
35
+ def sorted_instances(service_name, schema, groups, observer)
36
+ registry = Object.const_get(@configuration.registry).instance
37
+ sis = registry.service_instances(service_name, schema, groups, observer)
36
38
  sis.sort {|a, b| "#{a.address}:#{a.port}" <=> "#{b.address}:#{b.port}"}
37
39
  end
38
40
  end
@@ -0,0 +1,14 @@
1
+ module Dryad
2
+ module Cluster
3
+ class ServiceObserver < ::Dryad::Consul::ServiceObserver
4
+ def initialize(round_robin)
5
+ @round_robin = round_robin
6
+ end
7
+
8
+ def update_self(service_instances)
9
+ sis = service_instances.sort {|a, b| "#{a.address}:#{a.port}" <=> "#{b.address}:#{b.port}"}
10
+ @round_robin.set_services(sis)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,5 +1,5 @@
1
1
  module Dryad
2
2
  module Cluster
3
- VERSION = '0.3.4'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dryad-cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pan Jie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-08 00:00:00.000000000 Z
11
+ date: 2019-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dryad-core
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.4
19
+ version: 1.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.3.4
26
+ version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dryad-consul
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.3.4
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.3.4
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: concurrent-ruby
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +120,7 @@ files:
120
120
  - lib/dryad/cluster.rb
121
121
  - lib/dryad/cluster/railtie.rb
122
122
  - lib/dryad/cluster/round_robin.rb
123
+ - lib/dryad/cluster/service_observer.rb
123
124
  - lib/dryad/cluster/version.rb
124
125
  homepage: https://github.com/jack0pan/dryad.rb
125
126
  licenses: