发表于: 2019-01-10 17:22:40
2 621
task9的第5天
今天完成的事情
1、完成部署2台web 测试服务端
主要:整理下代码,去掉多余的配置信息,比如:spring中关于rmi的配置信息
其次改下ip ,正常部署就可以,
注意:由于打包jar是代码与依赖分开打包的,需要同时上传依赖
其余测试就不贴图了。
2、深度思考---东西有点多,需要继续学习,理解
1.Dubbo提供了哪几种注册中心的方式?Redis和Zookeeper应该用哪一种?
- multicast
- zookeeper
- redis
- simple
推荐Zookeeper :
zookeeper在Dubbo中扮演了一个什么角色,起到了什么作用啊?
2.微服务里,什么是注册中心,注册中心最常见的有Zookeeper,Eureka,还有我们自己的Scallop,他们之间的区别是什么?
- 注册中心基本原理:
- 服务提供者在启动时,根据服务发布文件中的配置的服务发布信息向注册中心注册自己提供的服务;
- 服务消费者在启动时,根据消费配置文件中配置的服务消费信息向注册中心订阅自己所需要的服务,消费者刷新本地缓存的路由表;
- 注册中心定期检查服务提供者的健康状态,如果服务处理不可用状态,则更新服务状态;
- 服务消费者定期去注册中心获取最新的服务信息,并更新本地的缓存的路由表;
- 服务消费者从本地缓存的路由表中选出相应服务的所有可用的服务提供者,并根据一定的负载均衡算法选择一台服务提供者进行调用。
- Zookeeper
Zookeeper是著名Hadoop的一个子项目,很多场景下Zookeeper也作为Service发现服务解决方案。
Zookeeper保证的是CP,即任何时刻对Zookeeper的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是它不能保证每次服务请求的可用性。从实际情况来分析,在使用Zookeeper获取服务列表时,如果zookeeper正在选主,或者Zookeeper集群中半数以上机器不可用,那么将就无法获得数据了。所以说,Zookeeper不能保证服务可用性。
- Eureka
Eureka本身是Netflix开源的一款提供服务注册和发现的产品 ** 提供了相应的Java封装。Eureka保证的AP**,在它的实现中,节点之间是相互平等的,部分注册中心的节点挂掉也不会对集群造成影响,即使集群只剩一个节点存活,也可以正常提供发现服务。哪怕是所有的服务注册节点都挂了,Eureka Clients上也会缓存服务调用的信息。这就保证了我们微服务之间的互相调用是足够健壮的。
对于服务发现场景来说: 针对同一个服务,即使注册中心的不同节点保存的服务提供者信息不尽相同,也并不会造成灾难性的后果。 因为对于服务消费者来说,能消费才是最重要的——-----拿到可能不正确的服务实例信息后尝试消费一下,也好过因为无法获取实例信息而不去消费。
- Scallop --------这个没找到,难道是我们自己写的轮子?
3.Dubbo和Spring Cloud的区别是什么?如果让你来做架构选型,你会选择哪一个微服务体系,原因是什么?
- 目前这两个都停留在概念上,但是如果非要选的话,选择Spring Cloud ,完美和Spring结合,依赖冲突少,配置简便
4.什么是微服务,微服务有哪几种实现方案,包含哪几个模块,Spring Cloud分别是怎么实现的?
- springcloud(一):大话Spring Cloud
- 从 Spring Cloud 开始,聊聊微服务架构的实践之路
- 推荐Spring boot 和Spring Cloud 学习:http://www.ityouknow.com/
5.什么是SOA,什么是SCA,什么是微服务?
5.1. SOA
- 如何通俗易懂地解释什么是SOA?-------- ---
- 光太狼的回答 - 知乎 https://www.zhihu.com/question/42061683/answer/251131634
- 按照具体的业务要求,把模块拆分成刚刚好的粒度---需要把握粒度
5.2. SCA
服务组件是SCA最基本的功能单元,可以把service的实现方法,pojo等包装为SCA的服务组件。SCA服务组件的主要接口规范是基于WSDL的,另外为了给Java提供一个比较直接的接口,也提供了Java接口。
SCA服务组件的特点
- 服务组件一般是粗粒度。
- 服务组件的接口是标准的接口。
- 服务组件实现与语言无关,即不绑定语言。
- 服务组件由组件容器管理,提供服务,不由程序代码控制。
服务模块由一个或多个具有内在业务联系的服务组件构成,是SCA中的运行单位,独立的部署单元。
一般应用是比较复杂的,实际应用需要多个模块满足要求,这些模块互相调用
- 模块提供两个端点,导入和导出,
- 导入使模块可以调用外部的服务,
- 导出使外部的应用可以调用模块内部的服务。
当我们在构建了多个模块的时候:
- 如果有一些资源可以在不同模块之间共享,那么我们可以选择创建一份可以在不同模块之间进行共享的资源。
- 共享库就是存放这些共享资源的地方。
- 共享库包含的内容只有:数据定义,接口定义,数据映射和关系。
- 与模块最大的区别是共享库不包含服务组件,因此也就不包含业务逻辑。
5.3. 微服务
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
6.Spring RMI,Spring Cloud,Tuscany,Dubbo分别是什么,互相之间有哪些不同?
- Spring RMI
- 将RMI进行了封装,在spring框架中便于使用
- Spring Cloud是一系列框架的有序集合。
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发, 如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等, 都可以用SprinBoot的开发风格做到一键启动和部署。
Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来, 通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
tuscany
- Apache组织关于SOA实现的一个开放源码的工程项目
- Apache组织关于SOA实现的一个开放源码的工程项目
- 该项目主要基于SCA,SDO,DAS等标准上实现的
Dubbo
- 阿里巴巴公司开源的一个高性能优秀的服务框架,
- 使得应用可通过高性能的 RPC 实现服务的输出和输入功能
- 可以和Spring框架无缝集成。
7.怎么实现WEB调用Service的负载均衡,怎么实现可以动态添加服务?
- RMI可以用cluster4spring
- Tuscany 随机数模拟,捕获异常
- 注册中心也可以
8.公司内部项目里使用的Scallop是什么,和资源中心是怎么结合在一起使用实现动态增加服务的?
Scallop: 注册中心,是公司自己写的,现在还没用过。
明天计划的事情
1、学习Spring boot
2、继续看SCA、SOA、微服务----小课堂
3、了解下Scallop
4、开始复盘评审的相关准备
遇到的问题
无
收获
1、简单了解SOA,SCA,微服务
任务总结
1.任务名称:JAVA=TASK9
2.成果链接:
3.任务耗时:2019.01.06-2019.01.10 (5天)
4.技能脑图
个人脑图
官方脑图
5.任务总结
5.1 任务延期:
- 任务耗时5天,原计划4天内完成,延期1天
- 延期原因:个人状态一般,延期一天
5.2 脑图对比:
- 主要学习了Tuscany,使用Tuscany发布RMI服务
5.3 知识点:
5.3.1 SOA---目前还需要理解
- 面向服务的体系结构(Service-OrientedArchitecture,SOA)是一个组件模型,
- 它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
- 接口是采用中立的方式进行定义的
- 它应该独立于实现服务的硬件平台、操作系统和编程语言。
- 构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互
5.3.2 Tuscany
- Tuscany停止更新,放弃维护
- 主要demo是计算器(加减乘除4个组件)
5.3.3 Tuscany和Spring整合
- 服务端发布,客户端注册
5.4 坑点
- Tuscany2.0 最高支持 Spring 3.0.5
- 打包为jar ,需要注释 </pluginManagement>标签,否则插件没有效果 :日报链接
评论