微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构
更新进度(共6节):
章节 | 文章标题 |
---|---|
01 | 项目技术选型简介,架构图解说明 |
02 | 业务架构设计,系统分层管理 |
03 | 数据库选型,业务数据设计规划 |
04 | 中间件集成,公共服务管理 |
05 | SpringCloud 基础组件应用设计 |
06 | 通过业务、应用、技术、存储方面,聊聊架构 |
一、架构的概念
架构分类可细化的分为业务架构、应用架构、技术选型、代码规划、部署环境架构等。业务架构是核心的驱动力,应用架构是实现的思路,技术选型落地是结果。根据用户需求,设计合理的业务架构,做出相应的应用架构流程,最后落地实施,完成项目。如何在架构的初期,预判业务发展的速度,保证架构可以稳定快速的扩展,支撑起业务发展,这个是软件开发者,特别是架构师,需要长期积累和修炼的核心能力。
二、业务架构
业务架构中包括业务规划、功能模块、流程设计,微服务架构模式中对整个系统的业务进行服务化拆分设计,把实际的业务抽象化,进而进行封装,优化服务结构。不需要最好的架构,只选则合适的架构,系统架构的原则都要以解决业务问题为核心目标,任何不基于业务做天马行空的架构都是对公司的不负责任。
三、应用架构
应用架构流程是基于业务架构来设计的,相辅相成的关系。每个应用可以作为独立的服务组件,把系统规划为一个个服务模块,进而进行开发,部署,运维等系列操作,所谓应用就是各个服务模块。首选要明确各个服务核心功能,其次确定各个服务间协调工作,保证服务的稳定性。微服务架构模式下,对系统进行水平拆分和垂直拆分,做到可以对任何高并发的服务模块进行独立扩展,灵活性非常好。
四、数据架构
数据架构是确定数据库模型的设计,不同业务场景下的数据可以选择不同种类的库来存储,例如搜索的数据可以使用ES,热点数据可以使用Redis,普通业务数据可以选择MySQL。
五、项目代码规划
1、分层结构设计
清晰的分层设计可以帮助快发人员快速的理解系统,缩短熟悉系统的时间。
2、模块依赖
给出模块依赖的明确顺序,比如接口(Web层)依赖服务层(Service层),服务实现(Impl)依赖持久层接口(Dao),持久层实现(DaoImpl)依赖表实体对象(Entity),避免系统陷入代码杂乱的坑中。
3、开发规范
每个项目开发必须要遵守统一的编码规范文档,统一命名格式,注释风格,这样可以方便其他人员快速阅读和理解代码逻辑。
六、技术选型落地
选择合适的基础框架,数据库,中间件,基于项目的开发规范,把应用架构完整的实现,这样项目就很难走偏。把握系统的高可用、高性能、扩展、伸缩、安全管理等方方面面的知识需要一个持久的积累和在实践中不断进步。
系列专栏文章完结。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Consul介绍:什么是Consul & 与其他软件的比较
Consul介绍 什么是consul Consul是一个服务网格解决方案,提供了一个功能齐全的控制台、具有服务注册发现、配置中心和分段功能。Consul的每一个特性既可以根据需要单独使用,又可以一起使用来构建完成的服务网格。Consul拥有一个数据层且支持代理和本地集成模型。Consul提供了一个简易的内置代理以方便开箱即用,同事也支持第三方代理集成例如[Envoy](https://www.envoyproxy.io)。 关键特性: 1. 服务发现:客户端可以通过Consul注册一个服务,例如 api 或 mysql,并且其他客户端可以通过Consul发现服务提供者。通过DNS或HTTP,应用程序可以方便的找到她们依赖的其他服务。 2. 健康检查:Consul客户端可以提供任意数量的健康状况检查,这些检查要么与给定的服务相关(“web服务器是否返回200 OK”),要么与本地节点相关(“内存利用率是否低于90%”)。管理员可以使用这些信息监视群集运行状况,服务发现组件也可以使用此信息将请求路由到远离不健康的主机。 3. KV存储:应用程序可以将Consul的KV存储用于任何目的,包括...
- 下一篇
脑洞:字节码加强 (1) 日志收集方案
背景 需求:java技术栈,要接入目前所有的项目到日志中心,需求看似比较简单 但是实施的过程中各种问题,项目所属不同部门,使用开发框架不同,人员能力水平不同, 方案选择: 方案1 各个项目接入logstash, 各类日志框架都有,log4j logback log4j2(apache.logging.log4j),十分混乱,而且开发人员需要引入jar,有可能会与现有的jar版本冲突,有一定的开发成本. 方案2 基于现有的文件日志,filebeat收集之后,再进行分析,发送到消息队列,然后转储到elastic search. 可是日志格式不统一,kao 方案3 基于字节码加强, 重写log4j logback log4j2中关于打印日志的方法,进行拦截. 加入我们自己的逻辑,将日志以可控的形式进行记录,将消息直接入mq,再由消费端进行消费(可以是logstash或者自研的处理程序),然后将此程序集成至基础docker镜像,JAVA_OPTS参数设定javaagent路径即可 实施: 字节码加强框架选择:asm bytebuddy jvm-sandbox,前两个坚决不用,原因:我不相信我自...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Red5直播服务器,属于Java语言的直播服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库