车驰夜幕|6年架构师带你学习微服务的注册与发现:服务发现的意义
服务发现的意义服务发现 , 意味着用户发布的服务可以让其他人找得到 。 在互联网里面 , 最常用的服务发现机制莫过于域名 。 通过域名 , 用户可以发现该域名所对应的IP,继而能够找到发布到这个IP的服务 。
域名和主机的关系并非是一对一的 , 有可能多个域名都映射到了同一个IP下面 。 DNS ( DomainName System, 域名系统)是因特网的一项核心服务, 它作为可以将域名和IP地址相互映射的一个分布式数据库 , 能够使人更方便地访问互联网 , 而不用去记住能够被机器直接读取的IP地址串 。
那么 , 在局域网内 , 是否也可以通过设置相应的主机名来让其他主机访问到呢?答案是肯定的 。
通过URI来访问服务用户要访问某个服务 , 势必要通过URI来找到那个服务 。 URI ( Uniform Resource Identifier,统一资源标识符)是一个用于标识某- -互联网资源名称的字符串 。 例如 , 调用天气数据API,用户将发送一个GET请求到所发布的URI 。
http:// localhost: 8080/weather/cityId/ {cityId}这个URI包括以下内容 。 ● http是使用的通信协议 。 ●localhost是主机名称 , 这里特指本地主机 。 ● 8080是程序启动后占用的端口号 。 ● 端口号后面的字符串 , 就是主机资源的具体地址 。 通过上面的讲解 , 已经知道了localhost 其实是IP地址为127.0.0.1的主机名称 。 也就是说 , 访问htt:o/cahost:.808/weatercit.ld/ {cityId}等同于访问ht://7.1.8080/weatherlcitytd/ {cityId} 。 知道了URI的作用之后 , 那么进行服务之间的调用看上去好像易如反掌 。 在之前的天气预报微服务中依赖了天气数据API微服务 , 那么在调用方的代码里面 , 增加REST客户端来调用服务即可 。 于是很快就写出了如下的代码 。 ★天气预报服务.k asince 1.0.0 2017年10月25日★@author way Lau@Servicepublic class WeatherReportServiceImpl implements Wea therReportService {@Overridepublic Weather getDataByCityId(String cityId)//由天气数据API微服务来提供数据String uri = " : 8080/weather/cityId/" + cityId;ResponseEntity response = restTemplate.getForEntity (uri,String.class) ;String data = http://kandian.youth.cn/index/response.getBody() ;}}
那么 , 这么做会存在什么问题呢?
通过IP访问服务的弊端首先 , 一个比较大的问题是 , IP 是与一台特定的主机关联的 。 IP 必须唯- -, 不然会产生混淆 。
其次 , 要让服务的调用方记住服务方的IP地址很难 。 特别是当双方都还没有正式上线部署的时候 , 根本无法提前获知服务提供方的IP地址 。 IP 地址是相对变化的!
最后一点是 , 通过IP地址很难做到负载均衡 。 设想下 , 服务提供方提供了两个服务实例 , 分别部署到两台主机里面 , 那么用户要访问哪个IP呢?固定-一个IP,那么另一个主机对用户来说 , 就没有任何作用 , 因为根本没有实现负载均衡 。
需要服务的注册和发现知道了上面的问题 , 用户就能更好地理解需要服务的注册和发现机制的原因 。 服务注册和发现正像互联网上的DNS,可以让用户启动的每个微服务都把自己注册进-一个服务注册表(或称为注册中心) , 当其他微服务需要调用这个服务的时候 , 就通过服务的名称来获取到这个服务 。 因为多个服务实例都是映射到同--个服务名称的 , 所以通过服务名称来访问 , 就可以使用其中的任何-一个服务实例 , 也就可以实现负载均衡了 。
- 小鹰说科技|美军警告:别想分割封锁我们,美火速增兵叙利亚!大批装甲车驰援
- 「谢霆锋」王菲谢霆锋:复合6年,为何他们还不结婚?
- 杜兰特|7失误+11铁+负14,韦少到底怎么了?16年还带KD过小牛,硬刚勇士
- 香港美心月饼连续16年荣获世界优质食品奖 享誉国际
- 上观新闻|夜幕下的南京路步行街东拓段,灯光璀璨,景色更加迷人
- Plum小姐|全智贤背过的Gucci糊了6年,靠倪妮和李宇春能翻红?
- 明星婚姻|被骂吃软饭20年!自称不婚不育拖前任16年!转头即娶年轻富婆
- 正宗小吃货|英国女王加冕查尔斯却在一旁打瞌睡,从小对王位无感!,66年前
- 柚子在野区|【当当与您早知道】月亮不“孤单”
- 喵酱|向佐凭借《我的拳王男友》,获最佳男主角,为拍电影专门训练6年