服务化,也可以叫SOA,但在我们还是尽量避免用这个词,
因为它被炒得太热,一味的套SOA的概念,容易迷失原有的方向。
要向服务化推进,当然就需要搭建一些基础设施,来协助这个过程的实现,
那都有哪个方面的工作要做呢,这里把我暂时想到的列一列。
1. 服务的定义
服务提供者要怎么暴露一个服务?服务消费者要怎么引用一个服务?
肯定需要一个声明式服务定义框架,可以用注解,描述文件,DSL等,
这个要不要用标准,要看这个服务化应用范围,
如果只是公司内部用用,就没多少必要,
哪样声明方便,对开发人员要求最低,对系统侵入性最少就行。
2. 服务的调用
服务间的调用通常是远程的,
使各服务保持相对的独立,以及数据共享性,
整个调用过程的性能,可能是最关键的。
3. 服务的交互模型
交互模型也就提供者与消息者的协议,
可以是强类型,也可以是弱类型,
可以是文本,也可以是二进制。
4. 服务的生命周期
需要对服务的生命周期进行统一的,容器式的管理方式,
可以用现有的OSGi, IoC等容器。
5. 服务的版本化
服务肯定是要升级的,
而在多系统以及大量集群环境下,
升级肯定是分步骤分区域进行的,
这样就需要版本化的支持,
通过新老版本交错的方式,达到平滑升级,
当然,新老版本是否兼容,
是否会引起脏数据等都是要考虑的问题。
6. 服务的演化
服务的版本化,并不能全部解决服务的发展,
再好的治理结构,也不能避免混乱,
就像敏捷开发的“拥抱变化”一样,我们应该“拥抱混乱”,
当服务混乱不堪时,我们就需要重构,
这时,服务的合并,拆分再所难免,
版本化很难处理这种演进式改变,
那我们就需要一种机制保证演进过程的顺利进行,
比如标识某个服务过期,只允许旧的调用者使用,不允许新的调用者使用等等。
7. 服务安全
安全是永恒的话题,
包括服务的可调用的范围,认证授权,隔离性等,
还有数据的保密性、完整性等。
8. 服务注册
需要一个注册中心,
协助服务消息者发现服务提供者,
这样可以保证动态的增加提供者,
使整个服务集群保持活性。
9. 服务仓库
服务多了以后估计会像我们的开发库一样错综复杂,
最后可能需要一个类似于Maven的系统进行集中式管理,
这样我们就需要一个服务仓库,
从服务仓库中我们可以知道哪个服务依赖了哪些服务,
并且可能在定义服务的时候需要声明这些依赖关系。
10. 服务监控
通过Logger埋点,
监控服务的调用频率,调用时间,
可用性,节点数等,
以及报警提醒等。
11. 服务自动化测试
服务的变更,升级,将影响大量的调用者,
需要一套完善的自动化测试框架保证服务的正确性和健状性。
12. 服务开发过程
服务的开发,测试,部署,发布,下线等,
都是服务必然存在的过程,
框架对开发人员,测试人员,配管人员,运营人员的支持工作必不可少。
13. 服务归属
当服务被多个应用调用或被多个部门使用后,
谁来维护这个服务,服务间职责的划分都将成为问题。
转自:http://javatar.iteye.com/blog/517793
相关推荐
Java 面试过程中遇到的问题总结 本文总结了 Java 面试中的一些常见问题,涵盖了 Ajax 的原理、优缺点、 DispatchAction 和 Action 的区别等知识点。 Ajax 的原理 Ajax 是一种异步请求技术,通过 XmlHttpRequest ...
在JSP(Java Server Pages)开发过程中,开发者可能会遇到各种HTTP状态码,这些状态码是服务器向客户端返回的错误信息,表明请求处理过程中遇到了问题。本文将详细解释这些错误代码,帮助开发者理解并解决相关问题。...
### 用友升级过程中遇到的问题 ...综上所述,用友软件升级过程中可能会遇到各种各样的问题,关键是要有耐心并采取正确的解决策略。同时,在进行升级前做好充分的准备和规划,可以大大降低出现问题的风险。
在开发过程中,我们经常遇到各种问题,如查看WiFi密码、数据库导入、服务器配置以及应用程序的异常等。以下是一些相关的知识点和技术解决方案: 1. **查看笔记本WiFi密码**: 在Windows系统中,若想查看已连接WiFi...
在安装XAMPP的过程中,可能会遇到各种问题,尤其是在寻找合适的安装包和匹配系统环境时。XAMPP是一款流行的开源Web服务器套件,包含了Apache、MySQL、PHP和Perl等组件,常用于本地开发环境的搭建。以下是一些在安装...
总的来说,CXF-WebService开发过程中遇到的问题主要集中在服务器配置和部署、文件缓存管理和服务调用等方面。理解这些问题的根源,并掌握正确的解决步骤,对于开发者来说至关重要,因为这直接影响到开发效率和项目的...
1. **兼容性问题**:升级过程中可能会遇到新版本与旧硬件或软件不兼容的情况。解决方法包括查阅官方文档确认兼容性,更新硬件驱动,或者在兼容模式下运行新版本。 2. **数据丢失**:升级可能导致数据丢失,特别是...
基本情况 在一个项目开发过程中,遇到了小票自动打印的业务需求,原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打印,最后可参考资料偏少,由于项目紧急且对NodeJS的熟悉程度目前也还不够,所以转而...
在项目开发过程中,我们经常会遇到各种问题,尤其是在跨平台或者集成第三方服务时。本文将针对在Android项目中遇到的三个主要问题提供详细的解决方案,并强调团队协作的重要性。 首先,当项目在Android 9.0(Pie)...
* 系统漏洞问题:在 CentOS 中,我们可能会遇到系统漏洞问题,例如某些服务存在漏洞。这时,我们可以使用安全工具来检查和修复漏洞。 解决方案:使用安全工具来检查和修复漏洞,例如使用 Nessus 工具来检查系统漏洞...
安装过程中可能会遇到多种问题,本文将详细介绍安装流程,并提供解决常见问题的方法。 一、安装SQL Server 2005 1. 启动SQL Server 2005的setup.exe,按照向导逐步操作。确保选择正确的安装组件。 2. 如果出现提示...
在子域中部署Exchange服务器是一项复杂的工作,可能会遇到多种问题,包括但不限于DNS配置、域控制器的设置、Exchange服务器角色的安装以及与父域的交互。本文将通过一个实验环境的构建,逐步解释如何在子域中成功...
安装vsftpd,搭建ftp服务器过程中碰到的问题 在搭建ftp服务器时,可能会遇到一些问题,影响ftp服务器的正常运行。下面将分别介绍三个常见的问题和解决方案: 问题1:530 Login incorrect 在使用vsftpd搭建ftp...
在 Java 学习过程中,开发者经常会遇到一些问题和错误,这些问题可能会阻碍学习和开发的进度。因此,了解这些问题和解决方案对 Java 开发者非常重要。 一、Maven 运行环境问题 在使用 Maven 运行 Java 项目时,...
其次,关于“已成功与服务器建立连接,但在登录过程中发生错误(错误233)”,这通常与网络配置有关,特别是“Named Pipes”和“TCP/IP”协议未启用。在SQL Server配置管理器中启动这两个协议,然后重启服务即可解决...
在使用ANSYS软件的过程中,尤其是版本为14.0时,用户可能会遭遇一系列与许可证(License)过期和安装相关的问题。以下是一些常见的问题及其详细的解决策略。 首先,安装位置的选择是许多用户遇到的第一个难题。...
以上是项目开发过程中遇到的一些典型问题及其解决方案,这些知识对于Java开发者来说是非常基础且重要的。掌握这些技巧可以提高开发效率,解决实际问题。在遇到类似问题时,可以参考这些经验进行排查和处理。
记录集群启动过程及运行过程遇到的问题 在本篇文章中,我们将记录集群启动过程及运行过程中遇到的问题,并对每个问题进行详细的说明和解决方法。 Hadoop 集群启动 在启动 Hadoop 集群之前,需要先格式化 NameNode...