Odoo是一个全功能ERP平台,也是一个在线服务门户。随着odoo越来越流行,已经有了大量的海量用户高可用部署。Odoo也是一个开源开放的全面接口平台,轻松对接SAP Hana、用友集团财务、金蝶云星空等第三方系统平台。
比如Odoo官网的750万用户和每个月上百的企业SAAS用户,国内某odoo电商App的500万+注册用户等,我们为客户支持的在线应用,也达到了十万用户级别。海量数据应用更是比比皆是,国内使用odoo的上市公司,特别是制造行业,其SKU数量都在数十万级以上。
客户概况:某省某连锁集团,各地市子公司
局方用户是一个全省连锁加盟管理集团,要管理各地市约20多万家直营、加盟、联营等几十种级别的门店。由于一直长久都在稳定运营,故当前已存在着多个系统,销售、采购、门店、分析、微信端等各功能都有对应系统,需要对接的包含:SAP Hana,基于Oracle的营销系统,用友,国家一号工程,基于Java和RFID的集装箱联运系统。 为响应国家支持中小企业商户政策,用户需构建一套全供应链的金融管理平台,方便中小商户进行短期融资贷款,并以库存商品价值作为担保。Odoo以其全面的功能,开放的特性快速的实现了全供应链金融管理平台,通过XML/RPC方式直接对接,完美解决了行业数据的三大要求:“全面、及时、准确”。。
整体功能:省局->地市级->多门店->中央物流->集团分销/集团供应链平台
在OdooAi的连锁加盟供应链电商门户中,用户实现了完整的 B2B、B2C 平台功能,即零售门店向管理中心订货,管理中心向上游供应商统一采购并每周配送。同时,通过内部部署阿里的混合私有云,高效的实现了安全与便捷共存,系统通过了国有化认证,国产信创、等保三级安全认证。
集团分销,几十万家门店管理
商户端全面使用了 Odoo 的零售收银 POS系统,结合多种硬件,实现了自助购,扫码购,日结日清等业务要求。
1,Pos Box物联网网关。用于自助大屏购物,用户自助全程购物。由于用户量大,真实上线时使用了自刷的树莓派。
2,扫付款码设备。面向消费者,自动识别各种支付端付款码,只需扫码即可完成全部销售,店员或者用户无需点击或输入。
3,POS双屏收银设备。店员屏-收银管理全功能,顾客屏-展现付款码和展现广告及加购信息。
4,店员扫码枪。扫商品或者扫批次即可自动加购,亦可进行盘点。
为了更好的适应用户支付,我们开发了wechatpay微信支付和alipay阿里支付宝的相关模块,支持多种支付方式。
odoo供应链平台,综合仓储物流管理
全流程覆盖,条码、二维码、RFID全面支持,国家级等保三级要求保障
通过Odoo一体化智慧物流平台,切实让全省用户实现了:
•运营思想 • 工具化
•业务管理 •数字化
•安全技术 •现代化
出入库业务数据全面对接原有各系统(国家级,地市级,外部系统。销售/财务/自动分拣机),全面实现已有业务数据自动化免录入。业务进度实时查看。
全流程叉车操作、全扫码操作。自动数据完成,自动全程日志。
通过全RFID的货架,叉车,托盘管理实现仓库作业人员自动化操作,只需专注于业务。
混合云平台:基础架构全面云化,集群化。
RFID、二维码:国家标准Rfid-6B货架、托盘。一货一码,全程追溯。
物联网平台:设备注册、监控、预警。主动控制、操作对接(如零条系统拍灯)
超级简化的扫码操作
出入库流程自动化,将管理思想纳入系统
----
odoo开放接口平台,对接用友及SAP Hana
烟草行业作为信息化最好及最全面的行业,其业务子系统繁多复杂,通过Odoo的开放接口平台,我们以 Restful api + web service + dts数据抽取 模式对接了各种系统。
1,Odoo对接烟草行业专用 "一号工程" 平台
对接了烟草装箱、箱码、条装码及相关的装箱上架信息,快速实现 rfid 全流程自助免数据录入操作。
2,Odoo对接烟草用友财务系统
集团财务使用用友平台,Odoo AiErp每日定时将全部库存账同步至后台,涉及数据包括品规,仓库等,用于辅助各种财务核算。
3,Odoo对接烟草SAP Hana数据仓库
SAP Hana是客户的数据仓库系统,主要是用于海量客户数据及每日订单明细数据的统计分析。Odoo对接SAP,主要用于取客户信息,客户配送路线信息,通过数据仓库取数,不会影响到实时运营的业务数据库。
4,数据对接全面安全审计
基于国产信创要求,相关的数据对接及系统架构全面符合国家安全标准,并通过相关等级等保安全认证,在保证数据全面、及时、准确的同时,亦安全可靠。
Odoo集团部署,海量数据,高可用架构
为更好的支持海量用户及海量数据,特别是针对集团公司的多地市多公司部署,我们需要进行odoo的高可用性部署,以达到高性能,高稳定性,高扩展性,高安全性。我们以此多租户电商供应链门户应用为例,简述高可用架构的部署。由于odoo本身就是一个B/S架构的应用,所以本架构也可以适用于所有的odoo部署。同时,全开源的Odoo平台也很好的保障了数据案例,国家等保二级、三级的安全要求。
odoo采用了业界流行的基础架构,包括:
- 操作系统:Linux,官方推荐Ubuntu
- 数据库:Postgresql
- Web服务器:内置 Werkzeug,前端一般通过Nginx,Apache等代理
- 前端:基于JavaScript的富客户端,通过Json-rpc调用后台数据。技术基于Jquery + backbone + owl(odoo14开始采用的mvvm架构)
- 后台:Python 3.8 +,使用threading + gevent 实现多线程,多协程。同时支持多进程启动
这些通用且以开源为核心的架构,保证了其具备很好的可扩展性,可以方便的进行集群及高可用部署。
在本应用场景中,管理方为集团公司,下属多个子公司。每个子公司对自有b2b,b2c客户提供移动电商批发零售服务,每个子公司对自有供应链业务进行管理。每个b2b客户再通过门店收银为最终b2c消费者提供零售服务。平台顶层,由集团公司同时统一管理所有客户及产品,并通过odoo制定业务规则,以规范子公司以及b2b客户的日常运营。系统要达到保障百万级别用户在线,实现快速响应,热备份,热更新,动态扩展等要求。
-
消费者/零售商户
即我们的b2b, b2c客户,这些客户通过使用省内的金叶、20支线下门店、odoo开发的App、微信小程序及电商平台进行批发零售采购。基于互联网访问。
-
供货商
为平台提供端口的供应商,与1类似,通过App、微信小程序及网站来管理商品及发货。基于互联网访问
-
平台管理方
平台业主,包括集团用户与子公司的用户,主要通过odoo管理业务。基于内网或者通过VPN进入内网,访问平台。
-
互联网
基于odoo建立的门户网站,以及基于odoo接口实现的App或者微信小程序,都是通过互联网提供服务,odoo仅通过互联网提供接口服务,供客户端调用,相关管理后台功能不通过互联网开放。
-
防火墙
防火墙进行安全隔离,企业可以自行定制相关策略,防范网络攻击等。
-
VPN+安全策略
核心平台部署于集团IDC,odoo的后台业务管理服务仅向内网用户提供,故所有子公司及相关管理用户,只可通过内网或者VPN登入内网,才可进行业务管理。
-
前端服务群组
前端服务器群组一般包括反向代理服务器和负载均衡服务器。
我们使用Nginx反向代理服务器,odoo通过Nginx对外提供Web服务,一般1主1备实现高可用即可,同时可以构建Nginx集群提供更好的性能。相关的SSL证书也通过Nginx进行配置以保证连接安全。
当使用多Nginx服务器后,我们需要增加负载均衡服务器如F5等进行用户动态分配。
使用Nginx作为前端有另外一个好处,就是当平台需要符合国家的网络安全等级保护要求时,很多内容通过Nginx即可进行。
-
核心odoo服务集群
Odoo设计时就考虑了集群及多租户情况。按实际业务情况,我们可以分为多个odoo服务集群,将应用负载分离,以保证高性能。
每个集群可以由多台odoo服务器组成,这样当某台odoo故障下线时,其它odoo服务器可以承担服务,以保证高可用。
这些服务器通过7中的前端服务器群组进行任务分配,一般这些服务器集群我们会在DMZ区进行更好的安全保障。
- 8.1 核心odoo服务集群
提供系统核心服务,包括对外部App接口,对内部的业务管理。
- 8.2 定时任务odoo服务集群
Odoo的定时任务即Cron,我们一般是用来进行业务计算或者数据同步的。比如同步其它系统的用户、商品信息,同步天猫/Amazon的订单信息,定期与支付服务商对账等。制造业中会用来做MRP计算或补货运算。
Odoo的Cron是可以单独执行的,由于这种服务可以免http服务,所以将其独立开来有助于提高性能,所以我们建立了独立的定时任务服务集群。
- 8.3 其它odoo服务集群
由于odoo可以多进程开启,所以我们可以根据实际业务需要,将某些应用独立开来建立单独的odoo服务器或者odoo服务器集群。
就原生功能而言,其PoS Box和即时聊天一样,都是走基于long polling的bus服务,比较独立的,可以将其独立部署。
在本文的应用中,我们也可以将对外的接口服务,进行独立部署。
注意!当我们拆分独立的odoo应用集群时,一定要注意代码的处理,特别是本集群内的odoo服务器,要保证多台服务器间代码的一致,可以用 Linux的rsync服务即可。
-
CDN/文件服务群组
为提高性能,静态文件可使用专门的CDN或文件服务器存储,可以使用自有CDN或者云服务商的CDN。
我们可能自行决定哪些静态文件进行CDN处理,一般包括:css,js, 字体,图片,系统附件等。
-
数据缓存集群
Odoo本身有数据缓存机制,Postgresql也有内置数据缓存机制。为了更高的数据读取性能,我们可以增加部署Redis,作为PostgreSQL的二级缓存, 提升数据库的性能,减少IO请求。
此功能需要进行一定的二次开发,控制数据读取。一般乐观数据如商品品类等基本不变化的我们从redis中取。悲观数据比如商品要记录其浏览量,加购物车量的,我们从数据库中取。
Redis可以进行集群部署,细节可自行查询相关文章。
-
PG数据库集群
数据是企业的核心,所以数据库是平台中最重要的组成部份。Postgresql作为最主流的数据库,有多种成熟的集群方案功能。
首先在硬件层架构上,我们要尽量保证:
- 使用物理机而非虚拟机作为数据库服务器
- 使用SSD或者高转速硬盘保证高IO性能
- 使用Raid保证存储的高可用及高IO性能
接着进行高可用架构部署,我们的目标主要为:
- 读写分离,实现高性能
- 主备复制,实现高可用
相关方案已经很成熟,比如我们可以直接使用:
- 华为云方案:
https://support.huaweicloud.com/bestpractice-rds/rds_pg_0009.html
- 阿里云方案:
他们都提供公有云或私有云的部署方案。
如果要自行建设,也有多种方案选择。
- 可以使用 postgresql数据库自带的基于Standby的异步流复制进行replication配置。
- 可以使用pgpool,这是个应该是最流行的一个集连接池、主备切换与负载均衡于一身的pg数据库连接件。
- 商业产品
相关方案比较多,可自行查阅。
-
运维监控服务
一般业主都有自己的基础运维体系,odoo使用的都是通用平台,所以可以很方便的将上述基础架构纳入集团整体IT运维架构中。
以下做些简述。
- 12.1 备份
定期数据库备份。
定期应用服务及配置备份。
基于GIT的代码版本管理,release管理。
- 12.2 主机监控
将上述主机纳入监控平台。
- 12.3 日志与审计
Odoo业务数据的变更自带审计功能,用好即可。
系统运行的Log最好不使用操作系统的Log,通过配置,记录到单独的数据库中,做好预警管理。
其它具体运维参照业主方SLA标准实施即可。
以上,作为Odoo高可用架构部署的参考,以帮助我们支持海量用户与海量数据,提高性能、稳定性及安全性。