作者回复: 单块优先,解决业务问题优先
作者回复: 可以设计开发成微服务,这样职责更单一结构更清晰,多人并行开发效率高。但要不要这样做还需综合考虑,微服务也引入复杂性,需基础设施支撑,投入大。主要考量因素是业务和团队规模,系统耦合度是否影响到多团队并行开发效率。如果业务不复杂人也少,单块能搞定最好,没必要为了微服务而微服务。
作者回复: 要看你的业务复杂性和团队规模,规模越大服务会分得越细,否则会有效率问题。如果规模小,建议做好基本的模块化就好了。
作者回复: 原则:上层可调下层,同层也可相互调用,但禁止下层调用上层
作者回复: 谢谢夸赞!
作者回复: 具体看你企业的规模,小规模1~2套网关就可以了,中大规模一般分场景部署多套网关 。例如携程网(ctrip)规模较大,2015年我在携程工作的时候,它们大致有6~7套面向不同场景的网关(配置也会有差别),目前应该远不止这么多套了。
作者回复: 随着企业业务和团队规模的扩展,会出现需要多套网关部署的场景,例如针对无线应用的无线网关,针对H5应用的H5网关,针对第三方开放平台的开放API网关,针对合作联盟商的联盟商API网关,当然如果企业内部部门和服务多了,也会出现内部API网关。
这些网关的职能大体类似,但是针对的业务场景不同,一些具体的功能和配置会有不同,有时还需要不同团队进行管理运维,这是分网关部署的一个主要原因,是一种按业务场景分开治理的策略。
当然,如果企业业务和团队规模小,则可能一套网关就可以搞定,规模大了业务场景复杂了自然会分治。
作者回复: 你好,这种做法我没有直接实践过,但我觉得可行,没有看到有明显的问题。事务控制你需要在这个数据服务中封装掉,最好有独立团队集中开发和维护这个数据服务,这样可以根据使用方的不同需求进行封装,集中进行事务处理,也集中进行治理。你需要做好监控,同时考虑扩展性,等量起来了可以考虑sharding,例如根据不同的领域进行拆分和隔离部署,后面按需扩容。
作者回复: 资源治理例如配额治理,一个微服务应用使用多少核CPU,内存多少,多少个容器或虚拟机,一个部门或者团队允许使用多少物理资源等,这些需要治理(规划管理和监控),不治理会被滥用。
作者回复: zuul一般只处理和业务无关的跨横切面(cross-cutting)逻辑,建议BFF单独一层,关注分离和职责单一原则,当然特殊情况(业务和团队规模很小)zuul上也可以承担BFF职责。
作者回复: 需要一些后端研发和架构经验积累,加油💪