 Okay, let's start it. Good afternoon. Let's start our presentation. Building a Cloud Integrative Application through Knative and Apache Camoclate. I'd like to give you a brief introduction. My name is Dawei Liangming, Zhang. I'm from the open source center of Huawei. I've been involved in different kind of Apache projects for a long time. Well, actually I've been in this area for a long time, so I am the Apache member. Before I joined Huawei, I was involved in the Apache Camo development. Currently, there are a lot of new things in Apache. And that's why I also invested a lot of time in the Apache program. And today, I would like to share with you a lot about Apache and the Camoclate. My name is Zhang Mengchen. I'm also from Huawei. Before I was involved in the architecture of the past, but in the past for one year. And I also involved in the architecture in the iPads and the iPads and the iPads. Today, I would like to share with you that the difficulties and the challenges when we carry out the smart park and how to be used the Apache Camo to solve the problems we met. Later, I wanted to use the Camo K, the Kinect to run a Camo application demo to go through the whole process. So this is the agenda of our presentation today. Just now, I just told you that in the past five, I was involved in the integration of the iPads and the iPads. And I visited the clients very often. So this is how it looks in the smart park. We are kind of the machines. And in each mart, there is a management system just like in style. And then we'll just scan our card and then go into the park. It looks really simple. Yeah, but it's really efficient as well. But let's imagine that if we can all this kind of visitor system, the textile system and the car system can be integrated together to the AI, whether we can have any new applications or not in the smart park. And we also mentioned something like scan your face and then you can be authorized. And in this way, the camera and the title, they are really simple system. But we can have the integration platform to connect the camera data together. And then weird camera recognition to recognize the person. And then in the visitor system, we can see that whether a person can be authorized to go through or not. Or we can also use the system to tell the customer service that your VIP client has already become. We'd like to tell the manager of the TenStyle system to tell them when to open and close the TenStyle. And actually, we have already met a lot of the scenarios like that before. And I'd like to share with you the simple. And after the camera just catch the face of the system. And the information or the message just send to the integration app. And then the face of the person can be recognized. And then in the visitor system, it will be told that whether it is a VIP, whether it is a real visitor, whether it is a frightened one or not. And then it will tell the receptionist that, well, please receive your VIPs from the front desk and then tell the to open or to stop. So this is the solution, detailed solution of the small part. And all this kind of system can be combined to the integration system or the platform. And form a new application, which is called integration app. So how can we achieve the integration app? And here we don't have the TenStyle. So I would like to give you a really simple demo for the TenStyle. It will be replaced by this robot. On this robot, there is a small camera when it catch my face. My face info will be uploaded to the integrated app. And then we'll have the visitor system. We'll have a really simple visitor system for demo. It can be recorded as the person is the VIP or non-VIP. We also have the mark system. It will be connected as well when it is connected. When the VIP or non-VIP visitor is come, I will receive the information of the message via my mobile phone. And we also have the queue, which will ask you some instructions as well. If we would like to open the TenStyle, the queue will be on. And then the TenStyle will be opened. So via this integration app, we can combine all the system together and to generate a new application. So this is what our demonstration is about. Okay, so William, please introduce us. How can we achieve that? Well, Michael Walker is my project manager. And he just assigned me a really interesting project. So after I've received this assignment, how can we achieve that? Now I would like to give you a brief introduction of the integration. Well, actually it is very simple. We just combine the application A and application B together in order to find these two. Maybe these two applications cannot be communicated to each other. We need to process some data. Because we will be the database to do that. The application A and FB will be access to the database. And then they can commute to each other. So it is a really old way for the integration. But for the camel, it is really interesting. And it would have a lot of the abstracts. For example, the abstracts of the DSA. In this way, we can connect the app A and FB. Yes, we'll process some data. We'll do something later in our case. And I will elaborate that in details. And how can we achieve the integrations of the apps used in the smart park? And currently we already have the cloud. So whether we can use all these kind of scenarios in the cloud or not, well actually you can find out the answers later when we introduce you to the camel case. So let's go back to our topic. First, I would like to introduce you to the apache camel. What is that? And it has already been available for over 12 years. And I've been involved in these projects for more than 8 or 9 years. Well actually not continuously. Well for the camel, it is really good for the integration because the kit is really small in the past. When we did the ESB, the camel focused on the process of the message and worked as the router. And it worked really well. And it is the Java-based integration framework. So it is easy to run. And later I would like to give you some concrete cases later as well. And it can also be able to implicate the EIP, which is the enterprise integration pattern so that it can be used in scenarios related to the integration. So when you devise the apps, a lot of the codes are repeated. So if we can abstract these kind of the repeated parts, the lines of the codes will be reduced. Well actually currently you can tell that how many lines of the code I will write can make this kind of the integration available. Well actually you can have your guess in your mind. And later I will tell you the real answer for the camel. It is really active. The community is really active. It provides over 300 components for the camel components. You can understand them in this way. For example, if I would like to integrate it to FTB or the SMS of the Amazon, if we need to communicate with them, all these kind of the complicated, powerful components can be used as well. And actually in the camel, it has less than 10 four components. But it has more over 300 components for maintenance. So if you have different kind of requirements for the application, your requirements can be met because that you can use some camel components available there. And actually this is one of the core reason for me to use the camel to make this integration app. So just now my colleague talked about that a camel has been working on integration for more than 10 years. It is a very powerful tool. And we have this ROMA service. This ROMA service works on different integration of apps. It is powered by Apache Camel. The core of this ROMA is Camel. And it has four features called the ABCV. A is application to application. That means the integration on the cloud and off the cloud. B means our own, the integration of our own app with the partners app. C means cloud. We have this, we know that cloud has, there are private cloud, public cloud, and there are many vendors for public cloud. So C means the cloud integration. And D means device, like the device and IT, how they can be integrated. So the ROMA integration platform works on these four aspects or the four scenarios. There is no much, no many codes required by pulling them and these four ABCV can be combined or integrated. So my colleague explained that for the Camel, it has its own integration pattern. For the programming interface of users, it is realized by this integration pattern here. Here you can see there are about 50 models through these models. The issues, common, the common issues in these scenarios can be adjusted easily. There are some core modules. One is related to information or messaging, like message construction. For example, in terms of messaging, there may be some message may be deployed in different places to enhance the messaging efficiency. Second is the messaging consumption, like through pulling from database. Third is monitoring SDP, like if there is a message from a point and point, we can respond to that. And for message, there is multicast or aggregated approach. For example, when you receive a message, you may need to notify ABCV the three subsystems and these ABC systems will respond to you. And you need to handle their responses and aggregate these responses. And in this case, EIP has mature models to deal with that. And the Camel is a specific reality or realization of EIP. You can choose corresponding DSL. Later, I will give you specific samples. So this is a Camel DSL example. This looks like LEGO. So the EIP is the standard components of LEGO. When we do the integration, we use these standard components and put them together. Then we have this integration or the EIP. LEGO is a good metaphor. When you build a LEGO aircraft model, you use different components. What we do is we develop these basic standard models or components and you can put together these components and make your own model. Now I give you a specific example here. This is a content-based router. So after certain conditions is met, the message can be routed to node A. And if conditions couldn't mess, then the message can be routed to node B. It's similar to the regular code writing here. First, we have from the starting point of the node, we get the message. This is a sort of message and we'll make a judgment whether it is a bug or not. This bug and this message is routed to another queue. When we write the Camel application, we don't need to use a message queue. We can use other things like direct endpoint or SEDA endpoint to do the job. Then in this way, the message queue won't be required. In addition to the Java DSL, it also supports other languages. This is the SML DSL and if you have used other apps, you will notice that you don't need to write a lot of code. You just start the first step, then the SML can load it, the rules. Take EIT as an example. First, we will have a component or a node. This node, let's say like a camera, it will capture the information and on its edge, it has this facial recognition function. Then through this transformation, it will transform this data into data recognizable by the visitor system. Then it will be transferred into EIP component. Then we can send this to the visitor system and the visitor system will respond to it and give feedback. That will evolve our judgment. We need to judge whether it is allowed or not. If it is allowed, whether it is VIP or non-VIP, then this information will be sent back to the notification system on the top right. This component is transferred into a data format that is recognized by these Cosmo blocks. Through the process, it is built by these seven blocks. These seven blocks are the core modules in this camera. This is the concept for this structure. Now we can take a look at a specific code. It involves 20 codes. I think we can reduce some codes. Like a header. All the codes are published. You can download it. The first two lines are a disclaimer about the RESTful endpoint. Cosmo can communicate with the route rules. There is a service call. That would be our visitor system. The visitor system will check in the visitors. We will get the information from the visitor system because we use the gs and pass to process the data. We can get the visitor's name. Then the information will be transmitted to the next node. Regarding the notification service, it is also easy. We add one DSL. This DSL will make judgments. We will judge the name of the visitor. If the visitor is X, we will add VIP in front of it. With this VIP header, this information can be transmitted to the next level. The notification will be sent back to Cosmo. It is a link or a glue that connects three systems. The endpoint can have communication with remote services. There are only 20 lines of code. After I finish these 20 lines, it can run or not. It is still involved in other work. We need to generate relevant files. You can go to the GitHub to check the information. In the interest of time, I will skip that. I will run a demo. We also need to define the camel and the component. If we want to run it on Kubernetes, we also need to add the executable procedure and push it to the server. Push it to the image server, and then the image server will run it. If there is no major change to the route rules, then we can do some dynamic run. I will explain later. I have been working on camel for quite a long time. It is fair to say that I have witnessed the involvement of camel. I found that a lot of people have introduced the new elements to camel for the SOA in the past. It was based on ESB to deal with message. Camel was a route engine based on this. Now, we see some typical scenarios which provide basic service. Based on this basic service, we can provide combinations of services, like in our case, the notification system, visitor system, and the combined system to provide this notification and visitor system. We also have the microservice architecture, but it also involves a lot of manpower in order to run it. Therefore, later, now we can leverage Kubernetes, whether it is a service mesh, which can help us to block the network issues. We can also leverage Kubernetes resource scheduling to drive the routing routes. That's why we use Camel to do the service. Speaking of this, I want to talk about Camel K. Camel K is Kubernetes based. Then we run the Camel application natively on the Kubernetes, and we also provide a light oise integration platform via the Camel K. The route policies can be deployed to the Kubernetes cluster. Later, I want to tell you how this one can be achieved in details. It also leveraged the upgraded SDK. It can also lead to the achievements of the CRK. The presentation yesterday and today we already covered these parts, and we won't talk about that in details, but we will give you a really concrete case. Camel K builds the application on top of the Kubernetes and I would like to give you some detailed explanation later. I'll just tell you there are 20 lines of the code, and we need to have to do the same rules. We need to add it and then for outsourcing, and we need to generate and register a mirror to deploy it in the Kubernetes, and we need to use the orchestrate kit on the Kubernetes and to make it a project which can be running. So there are a lot of things we need to do behind the 20 lines of the code, but how can we do that easily and fastly? If we pay attention only the 20 lines of the code, well actually that is the job of the Camel K. What does it do? The 20 lines of the code will transfer to the CRD. The resources will be defined as a CRD and finally they only use the one-kit or one-tool to convert that to an object of the CR on the Kubernetes, and it will have the operator. The operator will be the Kubernetes controller. It is for the DSL controller, and the controller will complete its job. For example, it will choose the mirror for the compiling, and after compiling it will generate a project, and the main dependencies will also be included in this framework as well. And here I just tell you that there are several languages you can use to develop the DRL. It can be the XML, it can be other languages such as a Grumi or other languages. So you can use various languages to do this, and then all these types of languages can be recognized. And after you've done this part, the mirror will be built, and after the mirror is built, it will deploy to the entire Kubernetes environment. So will it do it for us, which we have to do manually? Well, it needs to use the command of the Kubernetes to create the DSL 20 lines code or 20 lines of the objectives. So it will do everything for you, and finally what we get is the integrated app. And this is how the CRD looks in general. You can see that you add this standard Kubernetes thing, for example, version, remain data, and the specs. The most important part of the spec is the last one, and it is the 20 lines DSL documents that we created. And finally, all the things we have to do manually in the past can be automated, and then we just submit it and then generate it. In the DSL will be changed very often, right? So every time I change the SDL, they will run in the backstage for us. The speed is really fast so that it can speed up application and integration efficiency and productivity. And this is a simple introduction of the operator SDK. And if you are interested in my look at it, and if you need to define CRD for yourself, I think that it is quite complicated. So what we need to do is to define and describe the structure properly, and then if we use the functions of the operator SDK, it will write code for you. So what we need to do is to write code for a controller. So I think that the jobs of the deployment is really simple. So if you are interested, you can have a look at the code of the Camo K. And now I would like to give you a brief demo of our environment. So this is the demo, which is the recorder of our screen. But if we still have some time left, I would like to give you a live demo. And this is the Kubernetes environment we have already deployed. And this screen shows that we already deployed the Camo K operator to the Kubernetes environment and it is running on the Kubernetes. And this one, the router, we need to deploy it as well and it will run a Camo K instruction. And then the deployment, completion and operation will be done automatically. And in this way we can start it. So what we create is the user SDK object. And after this one is created, the operator will do everything for you. You can see that the operator has already built the router and has already deployed the router. And in here we need to forward and then we can convert our requirements or convert it to the Kubernetes. And you can see that in mixtage, there are two services has already been recorded. The first one is the visitor service, which has already been started in backstage. The purpose is to deal with the application of the visiting by the guests or the visitors. And this is the modification services. And if you are interested, you can connect it to it via your mobile phone. It has already been deployed on the public network and if you are interested, you can try it. And this is a one based on the web socket so that you can get the information. You can see it has already been started. Well, the application of the Cosmo has already been initiated. The notification has already been sent to the mobile phone of the receptionist. Well, actually another visitor is approaching. Well, for different users, you will receive different types of the message or notifications. You can see that another visitor is coming. Well, this one is an VIP visitor. Yes, she is an VIP. Okay, so this is the end of the demo. Due to the time limitation, I will go through these parts really quick. And connect it has already been mentioned for several times and I don't go through that very detail. For the connectives, we don't use the bill. We only use the serving and the eventing. And the eventing of the connective enables us to initiate the router so that the standard loading can be done automatically. And I just mentioned that I can deploy to the sensor to the cloud in the backstage and it will be packed and turn that into the mirror automatically. But currently we miss the time. We don't have the time. We don't know when we can pull it. But with the service of the connectives, we can pull it really conveniently. And another one is the auto-scaling of the connective. When you don't have any request, it can be downscaled. So the service instance can be turned into zero. So in this way, you can reduce the usage of the zero. So it is really useful in the IOT because in the IOP, the frequency is really low. Such as the door or your home. You need to open the door very often. You open and close the door but there is a really short time. So if you don't have this kind of a scale to zero function, you just keep using the resources in kind of ways. And it is also really helpful to write the router code just when we did. And I don't know the rest of you have already used the windows code before. I don't know whether you did it before. That was a long time ago, maybe 10 years. And that time you just press the button and then we just did the corresponding process and it's done. So with the connective, we can do with that really conveniently. And the common router standard, we can also do that via the corresponding kit, which provided by the Camo K. Camo also provides a connective event. So it can be connected to the connective service on a Kubernetes. So that your application can be loaded easily on a Kubernetes. And the modules we just mentioned can be separated. According to the requirements, request of the business, we can call all these modules according to the scenarios. Well, actually due to the time limitation we cannot talk too much. And if you are interested, you can scan the QR code right-hand side. It is the website of the Camo K. And on the left-hand side, it is the chatting group of the Camo group. And for the request or the call, you are welcome to join us. Actually, all this kind of call has already been available. It is written by the Python language. It is very simple and so much from us. And thank you very much for your time. Thank you for your questions from the forum. And if you have any questions, we are welcome to talk to you privately later on now. And if you don't have any questions, well, you're welcome to scan the QR code and join our chatting group. Okay, thank you very much for your time. Thank you.