soa架构php,soa,java_服务分层和SOA的初衷是什么?,soa,java,架构 - phpStudy

服务分层和SOA的初衷是什么?

抛开实际业务来谈架构,就是耍流氓

现在一提到电商网站架构,首先想到的就是SOA服务化

仔细想想,我们SOA的目的是什么,SOA的粒度怎么掌握(换句话说就是怎么去抽象一个服务)以及SOA以后,服务的上层怎么去分层?

先谈谈SOA。我们平时写代码,会各种抽象,其实我也思考过抽象的目的是什么?想了许久以后,得出了一个结论,抽象的目的是为了划分实体的边界,尽可能的让代码可以复用,以及增加代码的可读性。

而SOA我觉得和抽象的目的其实是殊途同归的。SOA最主要的目的就是划分服务的边界,提高服务的复用率(也包括以后扩展性)。

SOA以后,我们必须要在基础服务上面加一层,来组合这些基础服务。这个时候就有分歧出现了。在服务上面是加一层还是加两层。我觉得在前期的时候业务不是很复杂的场景下完全可以用一层。随着业务发展,发现在这一层业务变得越来越复杂,为了增加代码的复用率,组合服务之间的调用关系就会变得越来越复杂,这个时候就可以把这一层变成两层,抽出一些公有的逻辑,让抽象层次更加分明。

不管是SOA还是服务分层,就是一个抽象过程。而在这个抽象过程中会涉及到抽象层次的划分和抽象边界定义

相关阅读:

商城中如何确认此订单为这个人的第一个订单?

关于LNMP的权限问题

Android AndroidManifest 文件中 改变程序主入口的问题。

将addEventListener改成attachEvent,在IE8/IE6里面不能执行?

struts2+Spring+ibates中使用了velocity,怎么配置sitemest?

PHP:file_get_contents字符串结果查询

请教一个问题,第三方分享网页怎么判断分享成功或者失败?

从一个 HTTP 请求找出必需的最少参数

python爬虫下载文档

flex现在的兼容性如何

DIRECTORY_SEPARATOR其实都可以用 /嘛,windows也支持

线程同步和异步的区别?IOS中如何实现多线程的同步?

请问php如何快速的根据字符串进行数组访问.

想把之前写的单机版 windows 软件改成网络版,让每个用户可以注册并登录。类似 qq 的登陆,怎么架设服务器呢?

使用AngularJS 封装函数和使用Javascript 原生函数有什么区别?

网页前端代码显示控件是如何实现的?

webstorm 能不能修改注释风格

vscode 前端必备插件有那些 求大神推荐

在 git bash 里运行 java 命令,打印出的中文显示乱码

js正则匹配字符串里单引号的内容?

首先需要定义一个树结构的节点类,包含节点值和子节点列表: ```java class TreeNode { int val; List<TreeNode> children; public TreeNode(int val) { this.val = val; children = new ArrayList<>(); } } ``` 然后可以实现树的遍历方法,比如先序遍历: ```java public void preOrder(TreeNode root) { if (root == null) { return; } System.out.print(root.val + " "); for (TreeNode child : root.children) { preOrder(child); } } ``` 统计树中节点总数可以使用递归方式,每个节点的子节点数目即为它的贡献,加上1就是以它为根的子树的总节点数: ```java public int countNodes(TreeNode root) { if (root == null) { return 0; } int count = 1; for (TreeNode child : root.children) { count += countNodes(child); } return count; } ``` 最后可以通过一个示例来测试: ```java public static void main(String[] args) { TreeNode root = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNode node3 = new TreeNode(3); TreeNode node4 = new TreeNode(4); TreeNode node5 = new TreeNode(5); TreeNode node6 = new TreeNode(6); TreeNode node7 = new TreeNode(7); root.children.add(node2); root.children.add(node3); root.children.add(node4); node2.children.add(node5); node2.children.add(node6); node4.children.add(node7); System.out.print("Pre-order traversal: "); preOrder(root); System.out.println(); System.out.println("Total number of nodes: " + countNodes(root)); } ``` 输出结果: ``` Pre-order traversal: 1 2 5 6 3 4 7 Total number of nodes: 7 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值